Mongoose findOne method retrieves valid document with missing _id
我目前遇到一个非常奇怪的猫鼬错误,但我不知道是什么导致了此问题。当我调用
1 2 3 4 5 6 7 8 | { [CastError: Cast to ObjectId failed for value"[object Object]" at path"_id"] message: 'Cast to ObjectId failed for value"[object Object]" at path"_id"', name: 'CastError', type: 'ObjectId', value: { from_node_id: 52e10f6acce9daa7f3bf3162, target_id: 'a' }, path: '_id' } |
我有一个简单的架构定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var mongoose = require('mongoose'), Schema = mongoose.Schema; var transitionProbabilitySchema; transitionProbabilitySchema = new Schema({ _id: { from_node_id: {type: Schema.Types.ObjectId, ref:"Zone"} }, value: { total_transition_count: Number, probabilities: [ {to_node_id: {type: Schema.Types.ObjectId, ref:"Zone"}}, {probability: Number} ]} }, {collection: 'transitionProbability'}); module.exports = mongoose.model('transitionProbability', transitionProbabilitySchema); |
当我现在打电话
1 2 3 4 5 6 7 8 | TransitionProbability.findOne({"_id.from_node_id": from_node_id}, function (err, tp) { if (err) { handleError('error - tp not found', err, callback); } else { // some modification of tp and then save } } |
猫鼬返回文档,但仅
PS:请注意,
有任何想法吗?在此先感谢您的帮助!
编辑:手动设置_id字段似乎也不起作用。甚至更有趣:尝试其他方法时,我认识到例如
编辑:供您参考:在连续两天没有找到答案的情况下,我在Mongoose.js Github上创建了一张可能存在错误的故障单,他们确认了我的问题。 根据他们的说法,它在新的4.0.0版本候选版本中得到修复,不建议将其用于生产用途。 在实际上解决了我的问题,但是rc1提出了更多问题。
到目前为止,我的解决方案:
最终,我对这个错误感到非常恼火,以至于我更改了该表的整个累积量,以致