3

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);
    });

このアプローチにより、問題が発生します。ドキュメントは更新されず、エラーも返されません。

4

1 に答える 1

3

結局のところ、私の間違いは、次のようにMediaIDandを定義するのを忘れていたことです。StatusSchema

var encodingJobSchema = new mongoose.Schema({
    ...
    MediaID: String,
    Status: String
});
于 2013-09-26T19:02:03.777 に答える