如何在Express JS中使用特定字段而不是ID进行查询

时间:2018-11-14 15:59:01

标签: node.js mongodb api express

下面是我按城市查询搜索的代码。我的帖子中找不到我>我需要能够搜索特定城市并获取与该城市匹配的字段的所有记录。例如,如果城市位于市中心,那么我想要城市的所有记录

service: get-soundcloud-tracks 
provider:
  name: aws
  runtime: nodejs8.10
  profile: home
functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: users/create
          method: get
          cors: true

3 个答案:

答案 0 :(得分:1)

这是一种更好的方法;

router.get('/search', (req, res) => {
  const {city} = req.query
  Facility.find({city})
    .select('name type mobile price streetName city state')
    .exec((err, doc) => {
      if (err) {
        return res.status(500)
          .json({ message: 'error querying cities', error: err });
      }
      if (!docs) {
        return res.status(404)
          .json({ message: 'No valid entry found for provided City' });
      }
      return res.status(200)
        .json({
          facility: docs
        });
    })
})

find()将完成工作。我看不到您需要选择_id,如果您不希望选择-_id,则只用_id指定,但默认情况下选择了Model.deleteMany() Model.deleteOne() Model.find() Model.findById() Model.findByIdAndDelete() Model.findByIdAndRemove() Model.findByIdAndUpdate() Model.findOne() Model.findOneAndDelete() Model.findOneAndRemove() Model.findOneAndUpdate() Model.replaceOne() Model.updateMany() Model.updateOne()

如果您使用的是以下内容,则下面是Mongoose中有效查询的列表

@EntityView(DrawingRelease.class)
public interface DrawingReleaseDTO
  int getDrawingReleaseID();
  DrawingReleaseTypeDTO getReleaseType();

  @EntityView(DrawingReleaseType.class)
  interface DrawingReleaseTypeDTO {
    boolean isCustom1();
  }
}

检查https://mongoosejs.com/docs/queries.html以获得有关查询的更多信息

我希望这对您有帮助

答案 1 :(得分:0)

您快到了。只需指定您的查询,就可以了

https://mongoosejs.com/docs/api.html#model_Model.find

router.get("/search", (req, res, next) =>{
        const city = req.query.city;
        Facility.findAll({propertyName: city})
            .select('name type mobile price streetName city state _id')
            .exec()
            .then(docs => {
            console.log("From database", docs);
            if (docs) {
                res.status(200).json({
                    facility: docs
                });
            } else {
                res
                .status(404)
                .json({ message: "No valid entry found for provided City" });
            }
            })
            .catch(err => {
            console.log(err);
            res.status(500).json({ error: err });
            });

        });

答案 2 :(得分:0)

下面是工作代码:

router.get('/search', (req, res) => {
const city = req.query.city
    Facility.find({city})
        .select('name type mobile price streetName city state')
            .exec((err, docs) => {
                if (err) {
                    return res.status(500)
                    .json({ message: 'error querying cities', error: err });
                }
                if (!docs) {
                    return res.status(404)
                    .json({ message: 'No valid entry found for provided City' });
                }
                return res.status(200)
                    .json({
                    count: docs.length,
                    facility: docs
                });
            })

});