Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js mongoose:插入子文档而不是数组_Node.js_Mongodb_Mongoose - Fatal编程技术网

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

Node.js mongoose:插入子文档而不是数组,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在努力将一个文档插入另一个文档中。我已经看过了所有这样的条目,但它们不是我想要的 以下是场景: 我有一个公共文档,它有自己的模式。让我们称之为相关记录: (function(){ 'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var relatedRecordSchema = new Schema({ params: {

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

以下是场景:

我有一个公共文档,它有自己的模式。让我们称之为相关记录:

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

})();
我在需要它的文档中的数组中插入它没有问题。即其配置方式如下:

        //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())时,保存例程会毫无错误地放弃,这意味着它根本不会进入回调

所以在我看来,我把mongoose弄糊涂了,因为点赋值迫使子文档进入错误的位置

所以问题很简单:

如何设置该子文档

问题不是什么:

不,我不想就如何以不同的方式解决这个问题提供建议。我们有合理的理由按照我们现在的方式做事

干杯
正如海伦S正确指出的那样:

1) 子文档=数组,始终如此。它位于文档的第一行:|

2) 通过将类型设置为mixed,对象的赋值工作正常


我是个傻瓜。

在另一个模式中使用模式时,必须使用数组。相反,您可以使用Mixed-Type:source:{Type:Schema.Types.Mixed}我知道;)哈,不,真的,当我读到你的评论时,我记得我被搞糊涂了,子文档实际上暗示了一个数组……唉,我是个傻瓜。谢谢@HirenS.)