我有两个架构设置:
var ClientSchema = new Schema({
name: String
});
module.exports = mongoose.model('Client', ClientSchema);
和
var PlaceSchema = new Schema({
client: {type: mongoose.Schema.Types.ObjectId, ref: 'Client'},
address: String
});
module.exports = mongoose.model('Place', PlaceSchema);
如果我得到一个地方列表,我可以像这样容易地填充客户端:
Place.find({}).populate('client')
但是,如果我想获得所有客户及其所有地点的列表,我将如何进行查询?我应该简单地遍历所有客户端并在返回响应之前使用Place.find({client:client._id)
找到它的位置吗?
答案 0 :(得分:0)
此数据结构只能以一种方式工作,PlaceSchema确实引用ClientSchema,但ClientSchema没有对PlaceSchema的任何引用,解决方案是以这种方式定义ClientSchema:
var ClientSchema = new Schema({
name: String,
_address: [{type: mongoose.Schema.Types.ObjectId, ref: 'Place'}]
});
看起来有点愚蠢,但对你的案子来说会容易得多
答案 1 :(得分:0)
如果你有很多地方,他们将拥有自己独特的ID,并且对于客户端所连接的每个地方,你都可以拥有一个placeId数组,每次客户端连接时你都可以将placeId推送到这个数组到这个地方。
var ClientSchema = new Schema({
name: String,
_address: [{type: mongoose.Schema.Types.ObjectId, ref: 'Place'}]
});`