NOT不能在node / mongoose中工作

时间:2015-03-03 23:05:01

标签: javascript node.js mongoose

我基本上只想在真与假之间切换。

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中输入一个表达式,而不是像这样的解决方法吗?(它甚至不起作用:/)

1 个答案:

答案 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.
});