我在用打字稿填充用户模型时遇到麻烦。我具有用户方案的属性,该属性是对其个人资料的引用。为了用打字稿实现猫鼬,除了架构之外,我还必须定义一个tpo /接口。我的问题是我不知道必须将什么类型分配给配置文件属性。因为如果我在不填充查询的情况下运行查询,它将是一个“ ObjectId”,但是如果填充它,它将包含整个配置文件。
export type UserModel = mongoose.Document & {
name: string;
username: string;
email: string;
password: string;
profile: Schema.Types.ObjectId; // If I leave this property with this type, in case I populate a typescript query it would give me an error.
};
export const UserSchema = new Schema({
name: {
type: String,
required: true
},
username: {
type: String,
required: true,
unique: true
},
email: {
type: String,
unique: true,
required: true
},
password: {
type: String,
required: true
},
profile: {
type: Schema.Types.ObjectId,
ref: "Profile"
}
});
export default model<UserModel>("User", UserSchema);
答案 0 :(得分:1)
我的问题是我不知道必须将哪种类型分配给 个人资料属性。
您将需要定义2种类型/接口。
export default model<UserModel>("User", UserSchema);
此导出操作必须使用其他界面,在该界面中您已填充“个人资料”文档。
对于架构本身,您可以将其保留为objectID类型。
答案 1 :(得分:0)
尝试设置指向模型的填充物,这应该可以解决问题
User.find({}).populate([{"path":"profile", "model":"Profile" }])