这里我想得到一条记录,我需要稍加修改才能插入相同的记录。但我无法在新记录中看到我在记录中找到的数据。这是我尝试过的,有人可以帮助我吗?我认为问题在于这一行var institution = new Institution(data);
:
Institution.find({_id:i._id}).exec(function (err, result) {
if(result)
transferData(result);
}
});
});
}
function transferData(data){
var institution = new Institution(data);
institution.name = 'xxxx';
institution.save(function (err, data) {
if (err) {
return res.status(400).send({ message: errorHandler.getErrorMessage(err) });
} else {
console.log('Data Inserted Successfully');
}
});
}
答案 0 :(得分:0)
find()
会返回与回调中的条件匹配的文档数组,因此该行
var institution = new Institution(data);
将无效,因为它期望Document不是数组。
您可以使用 findById()
方法:
Institution.findById(i._id).exec(function (err, result) {
if (result) transferData(result);
});
function transferData(data) {
var institution = new Institution(data);
institution.name = 'xxxx';
institution.save(function (err, data) {
if (err) {
return res.status(400).send({ message: errorHandler.getErrorMessage(err) });
} else {
console.log('Data Inserted Successfully');
}
});
}
更好的方法是使用 findByIdAndUpdate()
方法:
Institution.findByIdAndUpdate(i._id, {name: 'xxxx'}, {upsert: true}, function (err, data) {
if (err) {
return res.status(400).send({ message: errorHandler.getErrorMessage(err) });
} else {
console.log('Data Inserted Successfully');
}
);