猫鼬 findByIdAndUpdate 不起作用

Posted

技术标签:

【中文标题】猫鼬 findByIdAndUpdate 不起作用【英文标题】:Mongoose findByIdAndUpdate not working 【发布时间】:2013-10-02 21:04:20 【问题描述】:

我在下面有一个相当直接的方法来根据其 ObjectId 更新文档。它不会返回错误,但无法对文档进行所需的更新。我认为它失败了,因为根据我的研究,findByIdAndUpdate() 只需要普通的 javascript,而 job._id 是我要更新的文档中的 ObjectId。有人可以告诉我如何使这项工作正常吗?

function handleEncoderResponse(xmlResponse, job) 
var r = et.parse(xmlResponse);
var mediaID = r.findtext('./MediaID');
var message = r.findtext('./message');

EncodingJob = mongoose.model('EncodingJob');

EncodingJob.findByIdAndUpdate( job._id, 
    "MediaID": mediaID,
    "Status": message
, function(err, result) 
    if (err) console.log(err);
    console.log(result);
);


编辑:根据这个问题Mongoose update document Fail with findByIdAndUpdate

我也尝试了以下代码,但无济于事。

job.MediaID = mediaID;
job.Status = message;
job.save(function(err, res) 
    if(err) console.log(err);
    );

这种方法会产生问题。它不会更新文档,也不会返回错误。

【问题讨论】:

【参考方案1】:

事实证明,我的错误是忘记在Schema 中定义MediaIDStatus,如下所示:

var encodingJobSchema = new mongoose.Schema(
    ...
    MediaID: String,
    Status: String
);

【讨论】:

以上是关于猫鼬 findByIdAndUpdate 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬 findByIdAndUpdate 不起作用

Mongoose / Express findByIdAndUpdate 不起作用

猫鼬 TTL partialFilterExpression 不起作用?

猫鼬 TTL partialFilterExpression 不起作用?

猫鼬独特:真的不起作用[重复]

猫鼬填充不起作用