【问题标题】:How do I access a MongoDB object id during creation?如何在创建期间访问 MongoDB 对象 ID?
【发布时间】:2018-07-24 12:12:35
【问题描述】:

我有一个网站,我想做这样的事情:

myModel.create({myObject}); //I want to access the automatically created objectId of this new document
refModel.create({refId:somehowAccessId});
//Or, without Mongoose
db.myCollection.insert({myObject});
db.refCollection.insert({refId:somehowAccessId})

这是如何完成的(最好不使用find 查询和回调)。

【问题讨论】:

    标签: node.js database mongodb mongoose ref


    【解决方案1】:

    您可以使用猫鼬的.save 来达到目的。在第一个模型中插入对象,保存它,并在收到成功回调后,将其_id 用于第二个模型,

    let model = new myModel(myObject);
    model.save(function(err, savedObject) {
       let accessId = savedObject._id;
       refModel.create({refId: accessId}); //or something similar
    })
    

    不使用猫鼬也可以做到这一点

     db.myCollection.insert(objectToBeSaved, function(err, savedObject) {
       let accessId = savedObject._id;
       db.refCollection.insert({refId: accessId}); //or something similar
     })
    

    【讨论】:

    • 我知道我可以做到,但我试图避免回调和过度嵌套。这是唯一的方法吗?
    • 如果不想过度嵌套,可以尝试使用Promise。这样您就可以避免回调地狱,但是,您无法访问_id,除非确保文档已成功创建,为此,您需要依赖callbackpromise
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2020-12-06
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多