Node.js 是否有任何方法可以使用.find()方法返回JSON文件?
我正在尝试从类别列表中的用户位置+用户选择进行查询。因为$geoNear不接受两个参数。我一直在尝试从返回值进行查询。但是,我收到一个错误,说我不能将.find()转换为JSON格式的文件(不是函数) 我还尝试将其放入函数中,然后得到一个回调错误+其他错误Node.js 是否有任何方法可以使用.find()方法返回JSON文件?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在尝试从类别列表中的用户位置+用户选择进行查询。因为$geoNear不接受两个参数。我一直在尝试从返回值进行查询。但是,我收到一个错误,说我不能将.find()转换为JSON格式的文件(不是函数) 我还尝试将其放入函数中,然后得到一个回调错误+其他错误 static async getuserinitialplacea(req, res) { const result = await PlaceService.getuserinitialplacea( JSON.par
static async getuserinitialplacea(req, res) {
const result = await PlaceService.getuserinitialplacea(
JSON.parse(req.query.userCoordinates),
).find({category: req.query.favCatgories})
res.send(result)
}
当我使用$geoNear时,是否可以使用两个参数进行查询?尝试在变量中为
getuserinitialplace
写入两个参数,然后将它们用作参数,如下所示:
static async getuserinitialplacea(req, res) {
try {
let arg = JSON.parse(req.query.userCoordinates);
const result = await PlaceService.getuserinitialplace(arg)
res.send(result)
} catch (e) {
console.error(e)
}
}
let arg = JSON.parse(req.query.userCoordinates);
let another_arg = req.query.favCatgories;
const result = await PlaceService.getuserinitialplace(arg, another_arg )
另外,这个.find({category:req.query.favCatgories})
查找部分没有意义。聚合
如果您的函数应该用作第二个参数,则使用它,如下所示:
static async getuserinitialplacea(req, res) {
try {
let arg = JSON.parse(req.query.userCoordinates);
const result = await PlaceService.getuserinitialplace(arg)
res.send(result)
} catch (e) {
console.error(e)
}
}
let arg = JSON.parse(req.query.userCoordinates);
let another_arg = req.query.favCatgories;
const result = await PlaceService.getuserinitialplace(arg, another_arg )
或者更好:
/** Code */
const { userCoordinates, favCatgories} = req.query;
const result = await PlaceService.getuserinitialplace(favCatgories, userCoordinates)
/** Other code */
如果您想在$geoNear
stage之后查找某个内容,只需添加另一个带有$match
的stage并查询即可。像这样:
static async getuserinitialplace(favCatgories, userCoordinates) {
console.log(userCoordinates);
try {
const places = await Place.aggregate([
{
$geoNear: {
near: { type: 'Point', coordinates: userCoordinates },
distanceField: 'calcDistance',
maxDistance: 25000,
spherical: true,
},
},
/** You could also add it before $geoNear stage */
{ $match: { nameOfField: favCatgories } },
/** OR { $match: favCatgories }, */
/** BUT favCatgories should be an object */
{ $limit: 200 },
]);
return places;
} catch (err) {
return console.log(err);
}
}
谢谢你的回答。不过我试过了。一旦我将“favCategories”添加到“static async getuserinitialplace(favCategories,userCoordinates)”,错误就会弹出:/