我基本上只是想在 true 和 false 之间切换。
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。它就是行不通。 在 Node 和 Mongoose 的世界中,我应该采取不同的做法吗?
此外,现在是否可以只在 mongodb/mongoose 中输入表达式,而不用像这样的解决方法?(这甚至不起作用:/)
最佳答案
opposite
的值将始终为 true
,因为 currentvalue.somethingTrue
将始终为 undefined
,即JavaScript 中的“falsy”值:
console.log( currentvalue.somethingTrue ); // undefined
console.log( !currentvalue.somethingTrue ); // true
而且,它是未定义
,因为该对象是从 .findOne()
返回的。是 Query
instance而不是从数据库检索文档。
.findOne()
也异步运行(不会阻止周围代码继续),因此为了提供文档,它需要一个可以调用的 callback
函数当文档可用时(或发生 err
):
doc.findOne({ _id : req.params.the_id }, function (err, currentvalue) {
var opposite = !currentvalue.somethingTrue;
// etc.
});
关于javascript - NOT 在 Node/ Mongoose 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28843727/