Mongoose Typegoose -一对多引用数据模型不起作用

3b6akqbq  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(142)

我正在用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总是未定义的。我的代码有什么问题,我该怎么修复它?

pqwbnv8z

pqwbnv8z1#

但是user.inbox总是未定义的。我的代码有什么问题,我该怎么修复它?
这可能有不同的原因,请检查以下内容:

  • 硬编码模型的名称是否正确?请使用console.log(MessageModel.modelName)进行测试
  • to中,实际上是否存在引用User_idMessage文档?
  • 这是一个类型问题还是在运行时(或两者)?

如果以上所有内容都经过检查并确认正确,请同时提供您的填充方式,或者最好提供完整的复制脚本。

相关问题