我正在努力在另一个文档中插入文档。我看过这样的所有条目,但它们并不是我想要的。
以下是该方案:
我有一个拥有自己架构的通用文档。让我们称之为相关记录:
(function(){
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var relatedRecordSchema = new Schema({
params: {
recordId: Schema.Types.ObjectId,
recordType: String,
recordTitle: String
},
metadata: {
dateCreated: {type: Date, default: Date.now}
}
},{ _id : false });
mongoose.model('RelatedRecord', relatedRecordSchema);
})();
我可以在需要它的ARRAY内部文档中插入它。即它以这种方式配置:
//Embedded
relationships: {
following: [mongoose.model('RelatedRecord').schema],
followers: [mongoose.model('RelatedRecord').schema],
blocked: [mongoose.model('RelatedRecord').schema]
}
这很有效。
不起作用的方案是有一条相关记录,让我们说一下通知的来源:
var notificationSchema = new Schema({
params: {
title: String,
imageUrl: String,
source: mongoose.model('RelatedRecord').schema
},
metadata: {
dateCreated: { type: Date, default: Date.now },
dateViewed: Date
}
});
因此,当我创建通知时,我尝试分配之前准备的RelatedRecord
returnObj.params.source = relatedRecord;
在插入调试期间出现记录(它在_docs分支内部,但比我预期的要深得多)但是当保存对象时(returnObj.save()),保存例程被放弃而没有错误,这意味着它根本不会进入回调。
所以在我看来,由于点分配迫使子网进入错误的位置,我混淆了猫鼬。
所以问题很简单:
如何设置该子文档?
问题不在于:
不,我不想填写或建议您如何以不同方式解决此问题。我们有合理的理由去做我们如何做的事情。
干杯 B'/ P>
答案 0 :(得分:0)
正如Hiren S正确指出:
1)Sub-Docs = array,always。它位于文档的第一行:|
2)通过将类型设置为混合,可以分配对象。
我是一个dumdum。