Я использую Mongoose для моделирования коллекций 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();
});
Это кажется чрезмерным. Есть ли лучший способ сделать это, или я пытаюсь использовать MongoDB слишком похоже на реляционную базу данных? Вместо того чтобы иметь коллекцию Транзакций
, связанных с каждым экземпляром Персоны
, должен ли я просто напрямую запрашивать коллекцию Транзакций
?
Спасибо.