繁体   English   中英

Express mongodb 查找查询结果空数组

[英]Express mongodb find query results empty array

我正在尝试对我的快速服务器进行 API 调用,以根据位置 ID 获取在同一地点工作的员工。 然而,API 调用只返回一个空数组,而它确实在命令行界面中工作。

员工 model

module.exports = mongoose => {
  var schema = mongoose.Schema(
    {
      first_name: String,
      last_name: String,
      address: {
        housenumber: Number,
        street: String,
        city: String,
        zip: Number,
        country: String
      },
      phone: Number,
      mobile: Number,
      email: String,
      enrollment_date: Date,
      staff_id: Number,
      location: { type : mongoose.Schema.ObjectId, ref : 'location' },
      department: String,
      function: String, 
      active: Boolean
    },
    { timestamps: true }
  );

  schema.method("toJSON", function() {
    const { __v, _id, ...object } = this.toObject();
    object.id = _id;
    return object;
  });

  const Employee = mongoose.model("employee", schema);
  return Employee;
};

API 的员工路由

  router.get("/location/:location_id", employees.findAllByLocation);

员工 controller 处理上述电话

exports.findAllByLocation = (req, res) => {
  Employee.find({ location: req.params.location_id })
    .then(data => {
      res.send(data);
    })
    .catch(err => {
      res.status(500).send({
        message:
          err.message || "Some error occurred while retrieving Employees."
      });
    });
};

要测试的虚拟数据库数据

要测试的虚拟数据库数据

Postman API 调用结果

Postman API 调用结果

但是,尝试在命令行界面中找到具有该位置 ID 的用户确实有效,并给出了所需的 output。

[Powershell 输出[3]

所以不知何故它搞砸了,我似乎无法弄清楚它为什么会这样做。 我做了一些研究,发现它可能与作为 ObjectId 引用的位置有关。 所以我尝试将 req.params.location_id 包装到 ObjectId 可能会修复它,但这没有用。

让这个工作的最佳方法是什么?

为了使用 promise 链,你必须返回一些东西,然后返回的值将作为数据链传递给“then()”。 在您的示例中,您应该

      return Employee.find({location:req.params.location_id})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM