我是猫鼬的新手所以这可能是非常简单的事情.但是.
我有一个非常简单的架构,其中包含一个简单的数字数组:
userSchema = new mongoose.Schema({ name : String, tag_id : String, badges : [Number] }); var user = mongoose.model( 'User', userSchema );
后来我想为用户添加徽章.所以..
user.findOne({tag_id:tagid}, function(err,doc) { if (!doc) callback(false, 'no doc'); // check to see if badge is in array, if not add it if ( doc.badges.indexOf(badgeNum) == -1 ) { doc.badges.push(badgeNum); doc.save( function(err) { if (err) callback( false, err ); else callback( true, ''); }); } else { callback( false, 'user already had badge' ) } });
但是每当我运行该代码时,我都会收到"VersionError:找不到匹配的文档".
我做了一点谷歌搜索,并发现在3.x mongoose中添加了版本控制的参考,并且它通常都在内部处理.应该注意的是,我通过json和mongo命令行将这个用户数据直接加载到mongo中(因此默认情况下不会定义版本控制变量,但我怀疑如果没有找到它,mongoose会创建它).不好的假设?)
编辑:抱歉,我的简化示例中有错误.