架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Config = require('../Config');
var serviceAvailability = new Schema({
agentId: {type: Schema.ObjectId, ref: 'agentProfile', required: true},
availabilityDate: {type: Date, required: true},
availabilityTime: {type: Array, required: true}
});
serviceAvailability.index({agentId:1 , availabilityDate:1},{unique:true});
module.exports = mongoose.model('serviceAvailability', serviceAvailability);
控制器:
Models.serviceAvailability.find({'agentId':'abcd'}, function (err, service) {
console.log(service);
if(service) {
callback(err , service);
}
else {
callback(err);
}
});
我正在尝试使用某些条件获取所有数据,例如,如果agentId等于某个值,但每当我使用任何条件查找数据时,我都会获得空数组,而如果我删除条件并找到所有数据,那么我会得到数据,这是为什么?
答案 0 :(得分:1)
我认为,您尝试在ObjectId Field上查找带有请求的mongoDB文档,但在您的示例中,您不使用正确的ObjectId字符串值。
ObjectId是一个12字节的BSON类型,使用:
构造
因此,这是使用正确的ObjectId请求serviceAbility的正确方法:
Models.serviceAvailability.find({
'agentId':'507f1f77bcf86cd799439011'
}, function (err, service) {
if (err) {
callback(err);
return;
}
callback(null, service);
});
在这种情况下,您应该agentProfile
_id
等于507f1f77bcf86cd799439011