这是我在MongoDB中的文档示例:
{
"_id": ObjectId('5525039895884d66710d0fc3'),
"prid": "63527",
"data": {
"sku": "HF22-81639",
"name": "Product Test",
"ean": "8763900872512",
"description": "This product is my first test",
}
}
我想制作几种搜索方法,搜索条件是按SKU,EAN或PRID搜索。我创建了方法,但是没有用,这是我创建的方法之一的示例,它不起作用,只是查找我的数据库的第一个文档,但没有任何搜索条件。
如果它完美运行,则搜索“_id”:
// GET - "_id"
app.get("/:id", function(req, res, next) {
req.collection.findOne({
_id: id(req.params.id)
}, function(e, result) {
if(e) return next(e);
res.send(result);
});
});
此搜索“sku”不起作用(这是我需要帮助的地方):
// GET - "sku"
app.get("/sku/:id", function(req, res, next) {
req.collection.findOne({
sku: id(req.params.sku)
}, function(e, result) {
if(e) return next(e);
res.send(result);
});
});
答案 0 :(得分:2)
不确定您的id()
功能是如何定义的,但您可以尝试:
// GET - "sku"
app.get("/sku/:id", function(req, res, next) {
req.collection.findOne({
"data.sku": req.params.id
}, function(e, result) {
if(e) return next(e);
res.send(result);
});
});
在原始代码中,req.params.sku
未定义,因为req.params
对象没有字段sku
。在网址中,只定义了req.param.id
字段(来自此=> "/sku/:id"
)。例如,如果您使用此网址测试API:
http://localhost:3000/sku/HF22-81639
将带回文件:
{
"_id": ObjectId('5525039895884d66710d0fc3'),
"prid": "63527",
"data": {
"sku": "HF22-81639",
"name": "Product Test",
"ean": "8763900872512",
"description": "This product is my first test",
}
}