我有两个使用Mongoose的模式
架构1
var schema = mongoose.Schema({
name: {
type: String,
required: true
}
});
return mongoose.model('User', schema);
架构2
var schema = mongoose.Schema({
name: {
type: String,
required: true
},
user: {
type: mongoose.Schema.ObjectId,
ref: 'User',
required: true
}
});
return mongoose.model('Page', schema);
我的网页收藏数据
_id
551b0cdf63dc96e9c39de0f8
551b0d1563dc96e9c39de0f9
551b0d2d63dc96e9c39de0fa
551b0d4363dc96e9c39de0fb
551daae0f4cb312c62dcbc1e
名
Cazaquistao
俄罗斯
中国
澳大利亚
萨尔瓦多
用户
5515c7aaaf6d59fea26d7185
5515c7aaaf6d59fea26d7185
5515c7aaaf6d59fea26d7185
5515c7aaaf6d59fea26d7185
5515c7c9af6d59fea26d7186
当我在用户搜索模式2时,我找不到任何结果。
mongoose翻译mongoose错误地转换查询。
查询
var test = Page.find().select("_id").where({"user" : "5515c7aaaf6d59fea26d7185"}).exec()
.then(function (t) {
console.log("hi", t);
});
错误地翻译了
db.pages.find({ user: ObjectId("5515c7aaaf6d59fea26d7185") })
没有结果
查询
db.pages.find({ user: "5515c7aaaf6d59fea26d7185" })=
4结果
有什么建议可以解决这个问题吗?
答案 0 :(得分:0)
如果user
是您网页文档中的字符串,那么您的架构需要反映这一点,或者Mongoose会尝试将其强制转换为架构中的类型(在这种情况下为ObjectId
)。
所以在模式中使user
为字符串:
var schema = mongoose.Schema({
name: {
type: String,
required: true
},
user: {
type: String,
ref: 'User',
required: true
}
});
答案 1 :(得分:-1)
我解决了传递objectId而不是String
的问题