mongoose:插入子文档而不是数组

时间:2016-01-05 08:08:03

标签: node.js mongodb mongoose

我正在努力在另一个文档中插入文档。我看过这样的所有条目,但它们并不是我想要的。

以下是该方案:

我有一个拥有自己架构的通用文档。让我们称之为相关记录:

(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>

1 个答案:

答案 0 :(得分:0)

正如Hiren S正确指出:

1)Sub-Docs = array,always。它位于文档的第一行:|

2)通过将类型设置为混合,可以分配对象。

我是一个dumdum。

相关问题