无论如何都无法删除具有“email”和“_id”的文档
当我点击HTML文件中的“删除任务”时,我想删除一个有关_id和电子邮件的文档。
以下是删除该任务的代码:我已将电子邮件的值和_id(仅hexstring值)传递给代码:
collection.findOneAndDelete({email:email,_id:taskid},function (err, result) { if (err) { console.log(err); } else { console.log("Removed!"); console.log(result); callback(result); } db.close(); });
但是,函数不能识别已经通过的_id。 “taskid”variables的值是566836bd8db43d3d56e23a4a
即只有来自_id的string值:
ObjectId("566836bd8db43d3d56e23a4a") var taskid=566836bd8db43d3d56e23a4a;
我已经尝试了每个可能的taskid声明来转换它,以便该函数可以识别_id的值并匹配它:
var taskid= "ObjectId("+'"'+req.param('taskid')+'"'+")";
但是到目前为止,我无法将_id与taskid匹配。 任何修复?
如果你打算比较ObjectId的话
var ObjectId = require('mongoose').Types.ObjectId collection.findOneAndDelete({email:email,_id:new ObjectId(taskid)},function (err, result) { if (err) { console.log(err); } else { console.log("Removed!"); console.log(result); callback(result); } db.close(); });
应该为你工作。
如果你觉得这项工作太难了,那么你可以创build一个新的方法。
String.prototype.toObjectId = function() { var ObjectId = (require('mongoose').Types.ObjectId); return new ObjectId(this.toString()); }; // Every String can be casted in ObjectId now console.log('545f489dea12346454ae793b'.toObjectId());