如何使用mongoose引用不在project中的模型

au9on6nz  于 2023-06-23  发布在  Go
关注(0)|答案(1)|浏览(89)

我正在为这个现有的应用程序构建一个推荐系统的微服务,它的主要后端已经在运行。这个微服务将是一个附加组件。我建立了一个推荐模型,它是这样的:

import mongoose from "mongoose";

const RefSchema = new mongoose.Schema({
    referralID : {
        type : String,
        required : true
    },
    userID : {
        type : mongoose.Types.ObjectId,
        ref : 'Customer',
        required : true
    },
    userStatus : {
        type : String,
        required : true
    },
    linkedAccounts : {
        type : [mongoose.Types.ObjectId],
        ref : 'Customer',
        default : []
    }
},{
    timestamps : true
});

const RefModel = mongoose.model('referrals', RefSchema);
export default RefModel;

现在,正如你所看到的,ref被设置为“Customer”,这正是它在主服务器中的建模方式。当我尝试在referral对象中填充任何内容时,我从NestJS得到一个错误,它说

尚未为模型“客户”注册架构。使用mongoose.model(name,schema)

如果你有任何想法出了什么问题,请让我知道,我也看了指南针,集合名称是“客户”,所以即使尝试,我得到了同样的错误。

a9wyjsp7

a9wyjsp71#

尝试在定义Ref模式之前导入Customer模式,这将初始化所需的模型。
此外,您应该在Schema声明中使用mongoose.Schema.Types.ObjectId

import mongoose from "mongoose";
import Customer from "path/to/customer-schema";

const RefSchema = new mongoose.Schema({
    referralID : {
        type : String,
        required : true
    },
    userID : {
        type : mongoose.Schema.Types.ObjectId,
        ref : 'Customer',
        required : true
    },
    userStatus : {
        type : String,
        required : true
    },
    linkedAccounts : {
        type : [mongoose.Schema.Types.ObjectId],
        ref : 'Customer',
        default : []
    }
},{
    timestamps : true
});

相关问题