我的猫鼬有问题。当我将某个字段引用到其他集合时,我失去了通过该字段进行搜索的能力。我不知道如何正确地描述我的问题,因此请查看示例。
模式:
var PostSchema = new Schema({
title: String,
content: String,
url: String,
author: { type: Schema.ObjectId, ref: 'User'},
mainImage: String,
type: String
});
查询:
Post.find({author: user._id})
.then(posts => res.send(posts))
.catch(err => res.status(500).send(err))
不返回任何内容。但是,如果我将“作者”字段更改为“字符串”,它将起作用,但不会填充。 :(
已更新: 我不敢相信我做到了:
var PostSchema = new Schema({
title: String,
content: String,
url: String,
author: {type: String, ref: 'User'},
mainImage: String,
type: String
});
只需将类型更改为字符串即可。天哪,我不知道它是如何工作的。猫鼬如何知道我需要在引用集合中比较哪个字段?我的意思是没有直接链接到“ _id”字段(请参阅查询)。有人可以解释吗?
Upd2:
Auhtor模式:
var UserSchema = new Schema({
id: String,
about: String,
firstname: String,
lastname: String,
email: String,
avatar: String,
city: String,
country: String,
dateOfBirth: String,
password: String,
},
{
timestamps: true
})
如您所见,我使用附加的“ id”字段只是为了向用户提供url的简单数字ID(/ id1等)。但是我确定这不是问题的根源:)
答案 0 :(得分:0)
尝试将type: Schema.ObjectId
更改为type: mongoose.Schema.Types.ObjectId