首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数必须是nodejs中的字符串。

参数必须是nodejs中的字符串。
EN

Stack Overflow用户
提问于 2016-07-27 04:04:08
回答 2查看 5K关注 0票数 7

我有以下代码:

代码语言:javascript
复制
              var objectid = infos[i].id;
              var name = infos[i].name;
              return collection.aggregate([
                {$match: {app: new ObjectId(objectid)}},
                {$group: {_id: "$uid", amt: {$sum: 1}}}
              ])

以前,这段代码运行良好,但最近我开始在sails中获得下面的堆栈跟踪:

代码语言:javascript
复制
error: TypeError: Argument must be a string
    at TypeError (native)
    at Buffer.write (buffer.js:791:21)
    at serializeObjectId (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:242:10)
    at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:699:17)
    at serializeObject (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:280:18)
    at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:705:17)
    at serializeObject (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:280:18)
    at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:551:17)
    at serializeObject (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:280:18)
    at serializeInto (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/parser/serializer.js:705:17)
    at serialize (/Users/user/git/pivot/code/node_modules/sails-mongo/node_modules/bson/lib/bson/bson.js:47:27)

这是因为我导入的ObjectId是这样的:

代码语言:javascript
复制
var ObjectId = require('mongodb').ObjectID;

就像我之前说过的,这件事很好,但现在已经不行了。我真的很困惑。如果我将objectId作为字符串,它将不会返回任何结果。如果我保持原样(就像以前一样),它会抛出异常。这里有什么问题?

我阅读了以下内容:

cmp

我能在robomongo做到这一点:

代码语言:javascript
复制
 db.getCollection("openevent").aggregate([
                {$match: {app: new ObjectId(OBJECT_ID) }},
                {$group: {_id: "$uid", amt: {$sum: 1}}}
              ])

使用与上面相同的值。我做错什么了??

我看到了sails-mongo的以下内容

代码语言:javascript
复制
└─┬ sails-mongo@0.12.1
  └─┬ mongodb@2.1.6
    └── mongodb-core@1.3.1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-12 01:39:05

为了子孙后代的利益,这通常是由于蒙戈版本之间的兼容性问题。MongoDB驱动程序2.2使用MongoDB 2.0 (和BSON0.5),而mongodb驱动程序2.1使用mongodb 1.3和BSON0.4。如果您尝试使用MongoDB驱动程序2.1 ObjectId和MongoDB驱动程序2.2,您将得到这个错误。

票数 8
EN

Stack Overflow用户

发布于 2016-07-27 07:22:40

我不知道为什么这是一个答案,但我会张贴它。

以前我有过这样的经历:

代码语言:javascript
复制
var ObjectId = require('mongodb').ObjectID;

我改了这个:

代码语言:javascript
复制
var ObjectId = require('sails-mongo/node_modules/mongodb').ObjectID;

不知怎么的,这一切都变得不同了。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38603529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档