मैं नेवला उपयोग कर रहा हूँ Person
और Transaction
संग्रह है, जहां प्रत्येक Transaction
दो अलग Person
उदाहरणों के लिए संदर्भ होगा मॉडल करने के लिए:मोंगोस: विदेशी कुंजी/व्यस्त संबंध कैसे मॉडल करें?
var TransactionSchema = new Schema({
, amount : { type: Number, required: true }
, from : { type: ObjectId, required: true }
, to : { type: ObjectId, required: true }
, date : Date
});
var PersonSchema = new Schema({
name : { type: String, required: true }
, transactions : [ObjectId]
});
मैं हर Person
चाहते हैं सभी Transaction
रों वे कर रहे हैं कि का एक संग्रह के लिए या तो to
या from
के लिए मूल्य। अब तक, यह सबसे अच्छा तरीका है कि मैं इसे कैसे समझ सकता हूं:
TransactionSchema.pre('save', function(next, done) {
var transaction = this;
Person.findById(this.to, function (err, person) {
person.transactions.push(transaction);
person.save();
});
Person.findById(this.from, function (err, person) {
person.transactions.push(transaction);
person.save();
});
next();
});
यह अत्यधिक लगता है। क्या ऐसा करने का कोई बेहतर तरीका है, या क्या मैं मोंगो डीबी का उपयोग एक रिलेशनल डेटाबेस की तरह करने की कोशिश कर रहा हूं? इसके बजाय प्रत्येक Person
उदाहरण के साथ जुड़े Transaction
रों का एक संग्रह होने का, मैं सिर्फ सीधे Translation
संग्रह की क्वेरी किया जाना चाहिए?
धन्यवाद।
muchos! बस मुझे –
पढ़ने की आवश्यकता है क्या यह पूर्व-सहेजने या पोस्ट-सेव में ऐसा करना बेहतर है। यदि सत्यापन त्रुटियों या किसी अन्य त्रुटि के कारण लेनदेन सहेजा नहीं गया है तो क्या होगा। क्या आपने अभी व्यक्ति में डमी आइटम नहीं जोड़ा होगा? यदि आप पोस्ट-सेव में ऐसा करते हैं तो आपको लेनदेन के लिए फिर से पूछना नहीं होगा – raju