我基本上只想在真与假之间切换。
var currentvalue = doc.findOne({ _id : req.params.the_id });
var opposite = !currentvalue.somethingTrue;
console.log("will this work?? " + opposite);
doc.update({ _id : req.params.the_id }, { $set : { somethingTrue : opposite }})
控制台始终记录为true。它只是不起作用。 在节点和猫鼬的世界里,我应该这样做吗?
此外,现在可以在mongodb / mongoose中输入一个表达式,而不是像这样的解决方法吗?(它甚至不起作用:/)
答案 0 :(得分:1)
opposite
的值始终为true
,因为currentvalue.somethingTrue
始终为undefined
,这是" falsy & #34; JavaScript中的值:
console.log( currentvalue.somethingTrue ); // undefined
console.log( !currentvalue.somethingTrue ); // true
并且它是undefined
因为从.findOne()
返回的对象是Query
instance,而不是从数据库中检索的文档。
.findOne()
也是异步行为(不会阻止周围的代码继续),所以为了提供文档,它需要一个callback
函数,它可以在文档可用时调用(或者err
已经发生了):
doc.findOne({ _id : req.params.the_id }, function (err, currentvalue) {
var opposite = !currentvalue.somethingTrue;
// etc.
});