gpt4 book ai didi

node.js - Mongoose :如何插入单个子文档 - 而不是数组

转载 作者:可可西里 更新时间:2023-11-01 09:08:56 26 4
gpt4 key购买 nike

在 mongoose 中,您可以按照以下方式为子文档声明模式:

        var childSchema = new mongoose.Schema({ name: String, age: String });
var parentSchema = new mongoose.Schema({
children: [childSchema]
});
var Parent = mongoose.model('Parent', parentSchema);
var Child = mongoose.model('Child', childSchema);

var child = new Child({name:'Joe', age: '21'});
var parent = new Parent();

parent.children = [child];

parent.save(function(err, saved) {
if(err) console.error(err);
});

似乎子文档类型需要是一个数组。我需要能够将子文档保存为单个实例,而不是数组,即:

        var childSchema = new mongoose.Schema({ name: String, age: String });
var parentSchema = new mongoose.Schema({
children: childSchema // not an array
});
var Parent = mongoose.model('Parent', parentSchema);
var Child = mongoose.model('Child', childSchema);

var child = new Child({name:'Joe', age: '21'});
var parent = new Parent();

parent.children = child; // not an array

parent.save(function(err, saved) {
if(err) console.error(err);
});

所以不是数组或引用,只是单个实例子文档。这可能吗?如果不是,我应该使用:

var childInstance = child.toObject();

最佳答案

有时很难看得很清楚。您不需要另一个模式来实现您想要的。您可以像这样简单地在父架构中定义子文档:

    var parentSchema = new mongoose.Schema({
child: { 'name' : String, 'age' : Number } // not an array, just a sub document
});
var Parent = mongoose.model('Parent', parentSchema);

var parent = new Parent();
parent.child.name = "Joe";
parent.child.age = 13;

parent.save(function(err, saved) {
if(err) console.error(err);
});

关于node.js - Mongoose :如何插入单个子文档 - 而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23627976/

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