猫鼬填充不使用 ObjectIds 数组
Mongoose Populate not working with Array of ObjectIds
这是我的架构:
/** Schemas */
var profile = Schema({
EmailAddress: String,
FirstName: String,
LastName: String,
BusinessName: String
});
var convSchema = Schema({
name: String,
users: [{
type: Schema.Types.ObjectId,
ref: 'Profiles'
}],
conversationType: {
type: String,
enum: ['single', 'group'],
default: 'single'
},
created: {
type: Date,
default: Date.now
},
lastUpdated: {
type: Date,
default: Date.now
}
});
/** Models */
db.Profiles = mongoose.model('Profiles', profile);
db.Conversations = mongoose.model('ChatConversations', convSchema);
module.exports = db;
然后我尝试使用以下代码 (http://mongoosejs.com/docs/populate.html) 填充用户:
db.Conversations.find(query).populate('users').exec(function (err, records) {
console.log(records);
});
这将返回 records
但 users
数组作为空白数组 []
。
我也试过相反的方法(http://mongoosejs.com/docs/api.html#model_Model.populate):
db.Conversations.find(query, function (err, records) {
db.Conversations.populate(records, {path: "users", select: "BusinessName"}, function (err, records) {
console.log(records);
});
});
结果相同。当我检查对配置文件收集记录的引用时。
知道这里出了什么问题吗?
我通过重命名模型让它工作(第三个论点):
mongoose.model( "Profiles", profile, "Profiles" );
问题是 Mongoose 正在搜索 profiles
集合,但它在数据库中的位置为 Profiles
。所以我将其重命名为 Profiles
以匹配确切的名称。
呸!感谢我。
这是我的架构:
/** Schemas */
var profile = Schema({
EmailAddress: String,
FirstName: String,
LastName: String,
BusinessName: String
});
var convSchema = Schema({
name: String,
users: [{
type: Schema.Types.ObjectId,
ref: 'Profiles'
}],
conversationType: {
type: String,
enum: ['single', 'group'],
default: 'single'
},
created: {
type: Date,
default: Date.now
},
lastUpdated: {
type: Date,
default: Date.now
}
});
/** Models */
db.Profiles = mongoose.model('Profiles', profile);
db.Conversations = mongoose.model('ChatConversations', convSchema);
module.exports = db;
然后我尝试使用以下代码 (http://mongoosejs.com/docs/populate.html) 填充用户:
db.Conversations.find(query).populate('users').exec(function (err, records) {
console.log(records);
});
这将返回 records
但 users
数组作为空白数组 []
。
我也试过相反的方法(http://mongoosejs.com/docs/api.html#model_Model.populate):
db.Conversations.find(query, function (err, records) {
db.Conversations.populate(records, {path: "users", select: "BusinessName"}, function (err, records) {
console.log(records);
});
});
结果相同。当我检查对配置文件收集记录的引用时。
知道这里出了什么问题吗?
我通过重命名模型让它工作(第三个论点):
mongoose.model( "Profiles", profile, "Profiles" );
问题是 Mongoose 正在搜索 profiles
集合,但它在数据库中的位置为 Profiles
。所以我将其重命名为 Profiles
以匹配确切的名称。
呸!感谢我。