Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 是否有任何方法可以使用.find()方法返回JSON文件?_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 是否有任何方法可以使用.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

我正在尝试从类别列表中的用户位置+用户选择进行查询。因为$geoNear不接受两个参数。我一直在尝试从返回值进行查询。但是,我收到一个错误,说我不能将.find()转换为JSON格式的文件(不是函数)

我还尝试将其放入函数中,然后得到一个回调错误+其他错误

 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)”,错误就会弹出:/