我有两个 Mongoose 模式:
var EmployeeSchema = new Schema({
name: String,
servicesProvided: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Service'
}]
});
var ServiceSchema = new Schema({
name: String
});
我正在尝试使用我发送到 http 请求中的服务 ID 来查找提供指定服务的员工。这是我的代码:
Employee
.find({
servicesProvided: req.params.service_id
})
.exec(function(err, employees) {
if (err) {
console.log(err);
res.send(err);
} else {
res.json(employees);
}
});
问题是这段代码返回一个空数组,我不知道为什么。我尝试了很多方法,例如将服务 id 转换为 mongoose.Schema.Types.ObjectId,但它不起作用。
有什么想法吗?我正在使用 Mongoose 3.8.39。谢谢!
最佳答案
在您的EmployeeSchema
中,servicesProvided
是一个数组,要按该字段过滤员工,您应该使用$in
运算符:
var services = [req.params.service_id];
Employee.find({
servicesProvided: {
$in: services
}
}, ...
关于node.js - 使用 Mongoose 在对象 ids 数组中查找对象 id 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36481712/