如何在HTTP请求JSON体中传递mongodb ObjectId()?

时间:2016-06-16 13:32:26

标签: json node.js mongodb rest express

我需要在JSON类型的请求体中发送一个mongo查询,例如:

{ _id : { $gt : ObjectId("575d0c22964ddb3b6ba41bed") } }

(获取比id'ed记录更晚插入的记录)

在节点服务器端,我用body-parser中间件表达。除非引用所有内容,否则它不会解析请求主体JSON。例如。以上必须是:

{ "_id" : { "$gt" : "ObjectId(\"575d0c22964ddb3b6ba41bed\")" } }

db使用所有引号运行查询并且不返回任何内容。

如何将ObjectId()作为函数传递给mongodb而不重新解析整个请求正文并剥离引号?

我正在使用Chrome中的postman扩展程序进行测试,并将请求发送到REST url: /api/:obj_type/list

整个请求正文用作查询。

1 个答案:

答案 0 :(得分:1)

您只会在客户端和服务器中传递字符串值,直到请求成为数据库,此时您将使其成为具有相同值的新ObjectID以传递到数据库中。传递字符串更容易,因为所有客户端/服务器都知道如何处理字符串vs ObjectID - 同样在URL中传递ObjectID也是一个问题。 - 回答关于如何将ObjectID()传递给Monogdb而不重新解析的问题。你真的不会,除非我误解了背景

但是将ID作为字符串传递,因此它就像var stringId = "507f1f77bcf86cd799439011",当你要进行查询时,你会做col.find({_id: new ObjectId(stringId)}).toArray(function(err,results){});

的行。