javascript - NOT 在 Node/ Mongoose 中不起作用

标签 javascript node.js mongoose

我基本上只是想在 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/

相关文章:

javascript - 如何在结帐时传递 stripe 上的现有订阅详细信息

javascript - 使用 Mongoose 获取新嵌入的文档

javascript - 将 Python 后端与桌面应用程序的 HTML/CSS/JS 用户界面集成?

javascript - 将 LinkBut​​ton 放在 GridView 的单元格上,并在用户单击它时运行 javascript 函数

javascript - 对象字面量 vs 构造函数+原型(prototype)

javascript - 在 Chrome 中检测 java 版本

node.js - 运行 Mocha 测试时更改默认的 TypeScript 配置文件

node.js - 无法解析 'babel-loader'

node.js - 仅在 Mongoose 中选择子文档数组列表

javascript - 没有字段名称的 Mongoose 结构聚合输出