gpt4 book ai didi

javascript - 无法将 .push() 子文档放入 Mongoose 数组

转载 作者:可可西里 更新时间:2023-11-01 09:27:31 25 4
gpt4 key购买 nike

我有一个 MongooseJS 架构,其中父文档引用一组子文档:

var parentSchema = mongoose.Schema({
items : [{ type: mongoose.Schema.Types.ObjectId, ref: 'Item', required: true }],
...
});

为了测试,我想用一些虚拟值填充父文档上的项目数组,而不将它们保存到 MongoDB:

var itemModel = mongoose.model('Item', itemSchema);
var item = new itemModel();
item.Blah = "test data";

然而,当我尝试将此对象插入数组时,只有 _id 被存储:

parent.items.push(item);
console.log("...parent.items[0]: " + parent.items[0]);
console.log("...parent.items[0].Blah: " + parent.items[0].Blah);

输出:

...parent.items[0]: 52f2bb7fb03dc60000000005
...parent.items[0].Blah: undefined

我能以某种方式做相当于 `.populate('items') 的事情吗? (即:从 MongoDB 读取文档时填充数组的方式)

最佳答案

在您的问题详细信息中,您自己的调查表明您正在推送文档,因为您可以找到它的 _id 值。但这不是实际问题。考虑以下代码:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost/nodetest')

var childSchema = new Schema({ name: 'string' });
//var childSchema = new Schema();


var parentSchema = new Schema({
children: [childSchema]
});

var Parent = mongoose.model('Parent', parentSchema);
var parent = new Parent({ children: [{ name: 'Matt' }, { name: 'Sarah'}] });

var Child = mongoose.model('Child', childSchema);
var child = new Child();
child.Blah = 'Eat my shorts';
parent.children.push(child);
parent.save();

console.log( parent.children[0].name );
console.log( parent.children[1].name );
console.log( parent.children[2] );
console.log( parent.children[2].Blah );

因此,如果现在问题不突出,请将注释行替换为 childSchema 的定义。

// var childSchema = new Schema({ name: 'string' });
var childSchema = new Schema();

现在这显然表明没有的访问器被定义,这带来了问题:

“您的‘Blah’访问器是否在您的架构中定义?”

所以它要么不是,要么那里的定义中存在类似的问题。

关于javascript - 无法将 .push() 子文档放入 Mongoose 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21590317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com