我正在用MongoDB作为数据库构建一个Node JS应用程序。我正在使用Typegoose,https://typegoose.github.io/typegoose/来操作数据库模型。我现在尝试定义一对多关系并通过prop检索相关数据。但它不起作用。
我有一个消息模型,其中包含以下代码:
import { prop, Ref, getModelForClass } from '@typegoose/typegoose';
import { User } from "./user";
export class Message {
@prop({ ref: User })
public from!: Ref<User>;
@prop({ ref: User })
public to!: Ref<User>;
@prop()
public contents!: string;
@prop({ default: false })
public isRead!: boolean;
}
const MessageModel = getModelForClass(Message);
export default MessageModel;
然后我有一个用户模型,它包含以下代码:
import { prop, getModelForClass, Ref } from '@typegoose/typegoose';
export class User {
@prop()
public name?: string;
@prop()
public email!: string;
@prop()
public password!: string;
@prop({ref: () => "Message", localField: "_id", foreignField: "to"})
public inbox?: Ref<"Message">[]
}
const UserModel = getModelForClass(User);
export default UserModel;
我在User模型中使用string定义Message模型的原因是为了解决循环依赖问题。
正如您所看到的,我试图关注的关系是User模型的inbox
prop。
我正在尝试通过该道具检索所有收件箱邮件。
但是user.inbox总是未定义的。我的代码有什么问题,我该怎么修复它?
1条答案
按热度按时间pqwbnv8z1#
但是user.inbox总是未定义的。我的代码有什么问题,我该怎么修复它?
这可能有不同的原因,请检查以下内容:
console.log(MessageModel.modelName)
进行测试to
中,实际上是否存在引用User
的_id
的Message
文档?如果以上所有内容都经过检查并确认正确,请同时提供您的填充方式,或者最好提供完整的复制脚本。