我想从前端发送数据,这意味着我提供了STOREID,CategoryID和SemiCategoryID。 在后端收到数据后,我希望根据前端提供的数据只收到相关项目。
{
"_id": {
"$oid": "5a1844b5685cb50a38adf5bb" --> **ID of the STORE**
},
"name": "ACE",
"user_id": "59e4c41105d1f6227c1771ea",
"imageURL": "none",
"rating": 5,
"items": [
{
"name": "NirCohen",
"categoryID": "5a0c2d292235680012bd12c9",
"semiCatID": "5a0c2d5a2235680012bd12ca",
"_id": {
"$oid": "5a1958181cd8a208882a80f9"
}
},
{
"name": "he",
"categoryID": "5a0c2d292235680012bd12c9",
"semiCatID": "5a0c2d5a2235680012bd12ca",
"_id": {
"$oid": "5a1973c40e561e08b8aaf2b2"
}
},
{
"name": "a",
"categoryID": "5a0c2d292235680012bd12c9",
"semiCatID": "5a0c2d5a2235680012bd12ca",
"_id": {
"$oid": "5a197439bc1310314c4c583b"
}
},
{
"name": "aaa",
"categoryID": "5a0c2d292235680012bd12c9",
"semiCatID": "5a0c2d5a2235680012bd12ca",
"_id": {
"$oid": "5a197474558a921bb043317b"
}
},
],
"__v": 9
}
我希望后端根据查询返回过滤的项目。
问题是,我无法获得CORRECT查询。
非常感谢您的帮助,
提前谢谢你。
答案 0 :(得分:1)
如果我理解正确,你就是这样做的:
Store.find({}).then(..);
如果您只想查找categoryID等于变量myCategory的商店,可以使用以下方法将其过滤掉:
Store.find({semiCatID: myCategory}).then(..);
如果这不是你想要的,请告诉我,然后我们可以继续尝试解决这个问题。
编辑:所以您要从前端发送变量StoreID
,CategoryID
和SemiCategoryID
。在后端接收它们,并希望过滤与所有三个字段匹配的数据库集合?
如果是这样..那么我认为你所要做的就是改变你当前的查询:
store.findOne({ _id: req.body.userID }, (err, store) => { console.log(store); });
类似于:
store.findOne({
_id: req.body.userID,
storeID: req.body.StoreID,
categoryID: req.body.CategoryID,
semiCategoryID: req.body.SemiCategoryID
}, (err, store) => { console.log(store); });
这样,你从mongo回来的对象必须匹配从前端给出的所有四个标准。