2015-01-02 10 views
7

में एक संपत्ति मूल्य में वृद्धि करता है क्या मॉडल के संपत्ति मूल्य में ऑटो वृद्धि के लिए एक अंतर्निहित तरीका स्ट्रॉन्ग्लूप लूपबैक है? इस मॉडल में ऑर्डर नम्बर नाम की एक संपत्ति है और मैं इसे 1 से शुरू करना चाहता हूं और हर बार एक नया मॉडल बनाया जाता है। यह मॉडल एक मोंगो डीबी के लिए जारी है। यदि स्ट्रॉन्ग्लूप लूपबैक में कोई अंतर्निहित नहीं है, तो जावास्क्रिप्ट, नोड और मोंगो डीबी का उपयोग करके सबसे अच्छा अभ्यास क्या माना जाएगा?ऑटो स्ट्रॉन्लोप लूपबैक मॉडल

धन्यवाद,

+0

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/ – Brian

+0

धन्यवाद @ ब्रायन, जिसने मुझे सही रास्ता शुरू कर दिया। – Warren

उत्तर

3

ठीक है, यह समाधान काम करता है, लेकिन मैं लूपबैक को दरकिनार कर रहा हूँ और "MongoDB कनेक्टर"। मैं यही कर रहा हूँ।

एक मॉडल का नाम दिया अनुक्रम कि इस तरह दिखता है यह देखते हुए:

{ 
    "_id": { 
     "$oid": "54ab3ec0cc074e24144f26d7" 
    }, 
    "collection": "SpecialOrder", 
    "value": 113 
} 

मैं यह कर रहा हूं:

mongoConnector = app.dataSources.MyMongoDBConnectorName.connector; 

mongoConnector.collection("Sequence").findAndModify({collection: 'SpecialOrder'}, [['_id','asc']], {$inc: { value: 1 }}, {new: true}, function(err, sequence) { 
     if(err) { 
      console.log(err.message); 
     } else { 
      // Do what I need to do with new incremented value sequence.value 
     } 
    }); 

लगता है कि कोई ऐसा करने का LoopbackJS तरह से बनाया जाना चाहिए। एक मूल्य बढ़ाने के लिए बहुत कुछ करने के लिए।

धन्यवाद,

वॉरेन बेल

1

एक ही समस्या है, लेकिन Postgres साथ। डेटाबेस में मैन्युअल रूप से कॉलम 'आईडी' को बदलने का उपयोग करके फिक्स्ड (सीरियल को सेट प्रकार जिसका अर्थ है पोस्टग्रेज़ में ऑटो-वृद्धि)। मुझे लगता है कि किसी भी डेटाबेस पर इस तरह से समस्या हल हो सकती है।

1

मैं अपना दृष्टिकोण साझा करना चाहता हूं, जो लेखक के उत्तर के समान है, लेकिन लूपबैक के तरीकों का उपयोग करने के साथ।

{ 
    "name": "sequence", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "name": { 
     "type": "string", 
     "required": true 
    }, 
    "value": { 
     "type": "number", 
     "required": true 
    } 
    }, 
    "validations": [], 
    "relations": {}, 
    "acls": [], 
    "methods": [] 
} 

के रूप में आप इस मॉडल में जितने चाहें उतने दृश्यों स्टोर कर सकते हैं: यहाँ Sequence मॉडल मेरे द्वारा बनाए गए है। तब मैं एक दृश्य मैं इस स्क्रिप्ट के साथ की जरूरत है (इस मामले में order अनुक्रम) बनाने: अब

var app = require('./server/server'); 

var Sequence = app.models.Sequence; 

Sequence.findOrCreate({ 
    where: { 
    name: 'order' 
    } 
}, { 
    name: 'order', 
    value: 0 
}, function (err) { 
    if (err) { 
    console.log(err); 
    } 
    process.exit(); 
}); 

हर मैं आदेश संख्या की जरूरत है एक आदेश बनाने के लिए, पहले मैं incrementing द्वारा Sequence मॉडल में order रिकॉर्ड को अपडेट इसके value और फिर इसका उपयोग करें:

var Sequence = Order.app.models.Sequence; 

Sequence.findOne({ 
    where: { 
    name: 'order' 
    } 
}) 
.then(function (orderNumber) { 
    orderNumber.value++; 
    return orderNumber.save(); 
}) 
.then(function (orderNumber) { 
    Order.upsert({ 
    orderNumber: orderNumber.value, 
    ... 
    }); 
}); 

चीयर्स!

संबंधित मुद्दे