gpt4 book ai didi

node.js - 传入的参数必须是 24 个十六进制字符的字符串 - 我认为是

转载 作者:IT老高 更新时间:2023-10-28 13:17:53 25 4
gpt4 key购买 nike

我有一种方法可以根据 ObjectID 在我的数据库中查找文档:

      console.log('id: ' + id + ' type: ' + typeof id);
collection.findOne({'_id':new ObjectID(id)}, function(error,doc) {
if (error) {
callback(error);
} else {
callback(null, doc);
}
});

当我运行它时,我收到以下错误:

/myPath/node_modules/monk/node_modules/mongoskin/node_modules/mongodb/lib/mongodb/connection/base.js:245
throw message;
^
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
at new ObjectID (/myPath/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js:38:11)
at /myPath/collectionDriver.js:134:41

这指的是上面的 collection.findOne() 行。

我在该调用之前的控制台日志将 id 输出为 24 个十六进制字符的字符串:

id: "55153a8014829a865bbf700d" type: string

在此之前,我使用 JSON.stringify() 将 id 从对象转换为字符串,但它似乎可以成功运行,如我的 console.log 中所示。

在 Robomongo 中运行 db.myCollection.findOne({_id : ObjectId("55153a8014829a865bbf700d")}) 会返回预期结果。

最佳答案

在这种情况下,传入我的函数的 id 已经是一个对象 ID,因此不需要从中创建新的 ObjectID。

当 ObjectID 注销到控制台时,它们显示为十六进制字符串,而不是 ObjectID("hexString"),所以我想我需要将其转换为查找,但它已经是以我需要的格式。

关于node.js - 传入的参数必须是 24 个十六进制字符的字符串 - 我认为是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30051236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com