【问题标题】:Mongoose ODM: NumberInt is not definedMongoose ODM:未定义 NumberInt
【发布时间】:2016-07-15 14:28:47
【问题描述】:

MongoDB 集合“test”包含一条记录:

{ "_id" : ObjectId("56f53cded3095c203024a884"), status : 0 }

我通过 Node.js(Mongoose 驱动程序)连接到 mongo。为此集合定义架构:

"Test" : {
    status : { type : Number, default : 0 }
}

字段“状态”是一个二进制标志,只能存储 0 或 1 个数值。我想用更新查询来改变这个标志:

test.update( { 'status' : 0 }, { $bit : { 'status' : { xor : NumberInt(1) } } }, function( err, result ) {
    if( err ) {
        console.log( 'err' );
    }
});

没有找到猫鼬NumberInt()函数:

ReferenceError: NumberInt is not defined

当我输入没有功能NumberInt() 的简单数字“1”时,我没有任何更改或错误。

在 MongoDB shell 中,该查询运行良好。我如何在 Mongoose 驱动程序中使用 NumberInt()?有别的名字吗?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    在 GitHub 上的 Mongoose 存储库中有一些关于在 this feature request 上支持 NumberInt 的讨论。然后通过mongoose-int32 NPM 包here 将其添加为插件。您可以通过安装然后使用类似以下内容的模块来实现与 MongoDB 的 NumberInt 相同的行为。

    var NumberInt = require('mongoose-int32');
    

    【讨论】:

    • 谢谢。我声明 var Int32 = require('mongoose-int32');并用这个执行查询: test.update( { 'status' : 0 }, { $bit : { 'status' : { xor : new Int32(1) } } } ... );但是字段“状态”没有再次更改(可能是我做错了什么?
    • 您是否尝试过将statustype 设为Int32 而不是Number
    【解决方案2】:

    { xor: 1-1 } 快速破解对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-22
      • 2019-03-18
      • 1970-01-01
      • 2020-08-24
      • 2020-07-11
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多