У меня есть две коллекции, первая с массивом ссылочных документов id во второй коллекции.
Есть определенное место, где я хочу создать новый DocumentType
, затем новый Document
, который ссылается на DocumentType
и, наконец, обновить исходный DocumentType
для ссылки на новый Document
.
A DocumentType
может иметь много Documents
, но Document
может иметь только один DocumentType
. Причина, по которой я хочу иметь ссылку в обоих местах, заключается в упрощении более сложных запросов в дальнейшем.
Мой вопрос: есть ли лучший способ написать это с помощью mongoose, чем иметь эти множественные вложенные обратные вызовы.
Я собрал простой пример для демонстрации. В реальных данных больше данных, и поэтому я не хочу, чтобы Document
s был встроен в DocumentType
s или наоборот.
var DocumentTypeSchema = new Schema({
name: String
, desc: String
, documents: [{type: Schema.ObjectId, ref: 'Document'}]
, ...
});
var DocumentSchema = new Schema({
title: String
, doctype: {type: Schema.ObjectId, ref: 'DocumentType'}
, ...
});
var Document = mongoose.model('Document', DocumentSchema);
var DocumentType = mongoose.model('DocumentType', DocumentTypeSchema);
// Begin the nested callbacks
// Create a document type
var type = new DocumentType({...});
// Save document type
type.save(function(err) {
// Create new document
var document = new Document({
doctype: type.id
, ...
});
// Save document
document.save(function(err) {
// Update document type
DocumentType.update({_id: document.doctype}, {'$addToSet': {documents: document.id}}, function(err) {});
});
});
Спасибо за вашу помощь