Node.js Mongoose-Modle.update()更新错误的文档-强制转换错误

Node.js Mongoose-Modle.update()更新错误的文档-强制转换错误,node.js,express,mongoose,Node.js,Express,Mongoose,我需要一些帮助来解决一些问题 我有一个模型: 新文档的创建工作非常顺利。在更新某些文档时,我遇到了一些麻烦 当我执行下面的代码时:=它只更新第一个文档,即使id不匹配 function edit_event (id, new_name, callback) { Event.update(id, {$set:{event_code: new_name}}, function(err, doc) { if (err) throw err; callback(); }); }

我需要一些帮助来解决一些问题

我有一个模型:

新文档的创建工作非常顺利。在更新某些文档时,我遇到了一些麻烦

当我执行下面的代码时:=它只更新第一个文档,即使id不匹配

function edit_event (id, new_name, callback) {
  Event.update(id, {$set:{event_code: new_name}}, function(err, doc) {
    if (err) throw err;
    callback();
  });
}
当我执行下面的代码时:=它给了我一个错误,请参见下面

function edit_event (id, new_name, callback) {
  Event.findByIdAndUpdate(id, {$set:{event_code: new_name}}, function(err, doc) {
    if (err) throw err;
    callback();
  });
}
使用findByIdAndUpdate时出错:模型事件的路径_id处的值58fdbde31bff83141b376508转换为ObjectId失败

求你了,我绝望了/

更新

我发现我试图传递的id被存储在它的周围,所以当我寻找具有匹配id的文档时,它会在它周围放置一对额外的id,这样它就会像id一样结束

更新2

当我列出所有文档时,它会返回:

{ _id: 58fdbde31bff83141b376508,

event_code: 'TestABC',

__v: 0,

segments: [] }

然后,当我将id存储在HTML表单中时,它会在其周围添加一对额外的。。。事件代码并非如此。为什么呢

看起来您执行了不必要的JSON.stringify,这就是为什么会在id周围加引号。调用JSON.parse应该可以解决这个问题:


Event.findByIdAndUpdateJSON.parseid,{$set:{Event_code:new_name}},

调用函数edit_Event时,检查是否传递了正确的id参数,该参数应为string。使用find时,应将参数指定为{u id:id}。。。id是由您提供的。您需要指定要匹配的密钥。我将id作为字符串传递。console.logid;在上面的例子中给我58fdbde31bff83141b376508。。。然而,我也尝试去修改“{u id:id}”=导致相同的错误哦,不:/。。。它给我的id是58fdbde31bff83141b376508 sry。。。我怎样才能去掉括号?我想就是这样吧。。。首先,你是如何在id周围找到它的…我需要注意一下。谢谢你给我指明了正确的方向,结果我试图以错误的方式将id存储到HTML表单中。。。最后在它周围放了两条绳子。。。。天哪,我真傻。。。
{ _id: 58fdbde31bff83141b376508,

event_code: 'TestABC',

__v: 0,

segments: [] }