微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以在mongodb的NodeJS驱动程序中手动指定BSON类型吗?如果我使用“ $ numberLong”,则会收到错误消息

如何解决我可以在mongodb的NodeJS驱动程序中手动指定BSON类型吗?如果我使用“ $ numberLong”,则会收到错误消息

这是在将文档对象插入到集合中之前构图的方式

function newTupple(name,email){
return {
  email:email,name:name,account_status:{
    email_verified:{                  //I want this in Int64
        "$numberLong": `${Date.Now()}`
    },activated:false
  }
}
}

然后我将其插入

const new_doc = newTupple("Ninja","jojo@something.com")
collection.insertOne(new_doc,(err,result)=>{
if(err){
    //err: returns " key $numberLong must not start with '$' "
}
}

我正在使用npm软件包mongodb@3.6.0

我在做什么错?还是自定义数据类型不适用于JS?

......................................

更新

......................................

完整错误日志

Error: key $numberLong must not start with '$'
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:915:19)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:941:17)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:941:17)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:727:17)
    at serializeObject (--------------\node_modules\bson\lib\bson\parser\serializer.js:347:18)
    at serializeInto (--------------\node_modules\bson\lib\bson\parser\serializer.js:941:17)
    at BSON.serialize (--------------\node_modules\bson\lib\bson\bson.js:64:28)

解决方法

您使用的扩展json语法不适用于在应用程序中构造对象图。相反,您应该构造适当类型的对象。

例如,请参见here以获取详细的示例。

const BSON = require('bson');
const Long = BSON.Long;

const doc = { long: Long.fromNumber(100) };

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。