这是对Easiest way to copy/clone a mongoose document instance?的跟进,对我来说并不适用。
以下代码抛出一个"无法编辑Mongo _id"字段,而不是擦除._id并在集合中创建新文档。
有没有更好的方法将文档的所有值克隆到新文档中,以供进一步使用/测试/等?
我在Mongoose 3.8.12 / Express 4.0上,我还在“未定义”中创建了一个新的ObjectID。 s1._id字段如下。
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 );
});
}
);
});
答案 0 :(得分:5)
您需要为要克隆的文档创建新ID并将isNew设置为true,因此“session”是您要克隆的文档:
session._doc._id = mongoose.Types.ObjectId();
session.isNew = true;
session.save(...);
答案 1 :(得分:4)
答案是:
var s1 = new Session(session);
s1._id = undefined;