【问题标题】:How to clone a mongoose document?如何克隆猫鼬文档?
【发布时间】:2014-08-29 17:05:12
【问题描述】:

这是Easiest way to copy/clone a mongoose document instance? 的后续,对我不起作用。

以下代码抛出“无法编辑 Mongo _id”字段,而不是擦除 ._id 并在集合中创建新文档。

是否有更好的方法将文档的所有值克隆到新文档中,以供进一步使用/测试/等?

我使用的是 Mongoose 3.8.12/Express 4.0,并且我还在下面的“未定义”s1._id 字段中创建了一个新的 ObjectID 进行了测试。

router.route('/:sessionId/test/:testId')
    .post(function(req,res){        
        Session.findById(req.params.sessionId).exec(
        function(err, session) {
            var s1 = new Session();
                s1 = session;
                s1._id = undefined;

                console.log('posting new test', s1._id);      // your JSON
                s1.save(function(err) {
                    if (err)
                        res.send(err);

                    res.json( 'new session ', req.body );
                });
         }
    );
});

【问题讨论】:

  • 感谢您回来证明答案。但是,您应该自己将其添加为答案(并接受它),而不是编辑问题。
  • 感谢您的指点。

标签: node.js mongoose


【解决方案1】:

您需要为要克隆的文档创建一个新的 id 并将isNew 设置为 true,因此给定“会话”是您要克隆的文档:

session._doc._id = mongoose.Types.ObjectId();
session.isNew = true;
session.save(...);

【讨论】:

    【解决方案2】:

    答案是:

    var s1 = new Session(session);
    s1._id = undefined;
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2014-05-29
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多