[英]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 调用结果
但是,尝试在命令行界面中找到具有该位置 ID 的用户确实有效,并给出了所需的 output。
[
所以不知何故它搞砸了,我似乎无法弄清楚它为什么会这样做。 我做了一些研究,发现它可能与作为 ObjectId 引用的位置有关。 所以我尝试将 req.params.location_id 包装到 ObjectId 可能会修复它,但这没有用。
让这个工作的最佳方法是什么?
为了使用 promise 链,你必须返回一些东西,然后返回的值将作为数据链传递给“then()”。 在您的示例中,您应该
return Employee.find({location:req.params.location_id})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.