Mongoose 创建上级单据时,如何自动创建被引用的下级单据?

Mongoose 创建上级单据时,如何自动创建被引用的下级单据?,mongoose,Mongoose,我有如下模型: var GameSchema = new Schema({ players: [{type: Schema.Types.ObjectId, ref: 'Player'}], }); var PlayerSchema = new Schema({ name: { type: String, required: true } }); mongoose.model('Player', PlayerSchema); mongo

我有如下模型:

var GameSchema = new Schema({
    players: [{type: Schema.Types.ObjectId, ref: 'Player'}], 
});

var PlayerSchema = new Schema({
    name: {
        type: String,
        required: true
    }
});
mongoose.model('Player', PlayerSchema); 
mongoose.model('Game', GameSchema); 
这是我的密码:

var p1 = new Player({name: 'abc'});
var p2 = new Player({name: 'def'});
var agame = new Game({players:[p1,p2]});
agame.save();

我想做的是,当在db中创建新游戏时,也应该创建p1、p2播放器。我的代码不工作,p1、p2未保存。我如何才能做到这一点?

这需要手动完成。首先保存玩家并获取他们的对象ID。推入引用的父玩家数组。
下一步是保存父项。

这需要手动完成。首先保存玩家并获取他们的对象ID。推入引用的父玩家数组。
下一步是保存父对象。

players
是一个objectid数组,因此需要传入
p1
p2
\u id
,而不是整个对象。新型号的
\u id
字段在
new
期间填充,因此它立即可用,但您仍然需要在所有三个字段上调用
save

var p1=新玩家({name:'abc'});
var p2=新玩家({name:'def'});
var agame=新游戏({玩家:[p1.\U id,p2.\U id]});
p1.save();
p2.save();
agame.save();

玩家
是一个objectid数组,因此需要传入
p1
p2
\u id
,而不是整个对象。新型号的
\u id
字段在
new
期间填充,因此它立即可用,但您仍然需要在所有三个字段上调用
save

var p1=新玩家({name:'abc'});
var p2=新玩家({name:'def'});
var agame=新游戏({玩家:[p1.\U id,p2.\U id]});
p1.save();
p2.save();
agame.save();

在我的情况下,我也必须手动执行此操作。因为它是一个web应用程序,所以在我的父控制器中,它得到了类似

.post((req, res) => {
    let parent = req.body;
    if(parent && parent.childrenArray){
        let ids = [];
        parent.childrenArray.forEach((children)=>{
            let c = new Children(children);
            c.save();
            ids.push(c._id);
        })
        parent.childrenArray = ids;
        req.body = parent;
    }

    // create parent
})

在我的情况下,我也必须手动执行此操作。因为它是一个web应用程序,所以在我的父控制器中,它得到了类似

.post((req, res) => {
    let parent = req.body;
    if(parent && parent.childrenArray){
        let ids = [];
        parent.childrenArray.forEach((children)=>{
            let c = new Children(children);
            c.save();
            ids.push(c._id);
        })
        parent.childrenArray = ids;
        req.body = parent;
    }

    // create parent
})