首页 > 解决方案 > Mongoose 模型架构引用不起作用 - 电子商务模型

问题描述

我正在使用以下架构创建多供应商电子商务平台。

var user = new Schema(
{
    uid: { type: String, index: true, unique: true },
    firstName: { type: String, required: true, default: null },
    lastName: { type: String, default: null, default: null },
    userEmail: { type: String, unique: true, required: true, lowercase: true, },
    userProfileImg: { type: String, required: true, default: null },
    userDesignation: { type: String, default: null },
    userMobile: { type: Number, required: true, default: null },
    products: { type: Schema.Types.ObjectId, ref: 'Product' },
  }
);

var product = new Schema(
    {
        sku: { type: String, required: true, unique: true },
        title: { type: String, required: true },
        category: { type: Array, default: [] },
        images: { type: Array, default: [], },
        groups: { type: Array, default: [], },
        price: { type: Number, default: null, },
        unit: { type: String, default: null, },
        quantity: { type: Number, default: null, },
        description: { type: String, default: null, },
    },
);

var AllUser = mongoose.model('User', user, 'AllUsers');
var Allproducts = mongoose.model('Product', product, 'AllProducts');

如何在引用多个用户的同时保存多个产品?稍后我想根据用户填充产品。

标签: javascriptnode.jsmongodbmongoose

解决方案


您的问题在于引用该集合。在这里编译模型时

var AllUser = mongoose.model('User', user, 'AllUsers');
var Allproducts = mongoose.model('Product', product, 'AllProducts');

您使用 Product,对于数据库收集,您使用 AllProducts。这就是问题所以......尝试这样做

 var Users = mongoose.model('Users', user, 'Users');
 var Products = mongoose.model('Products', product, 'Products');

给它一个适当的命名约定。

这段代码中也有错别字..这里我已经修复了

var product = new Schema(
    {
        sku: { type: String, required: true, unique: true },
        title: { type: String, required: true },
        category: { type: Array, default: [] },
        images: { type: Array, default: [] },
        groups: { type: Array, default: [] },
        price: { type: Number, default: null },
        unit: { type: String, default: null },
        quantity: { type: Number, default: null },
        description: { type: String, default: null}
    }
);

也在您的用户架构中

var user = new Schema(
{
    uid: { type: String, index: true, unique: true },
    firstName: { type: String, required: true, default: null },
    lastName: { type: String, default: null, default: null },
    userEmail: { type: String, unique: true, required: true, lowercase: true, 
    },
    userProfileImg: { type: String, required: true, default: null },
    userDesignation: { type: String, default: null },
    userMobile: { type: Number, required: true, default: null },
    products: [{ type: Schema.Types.ObjectId, ref: 'Product' }]
  }
);

将产品设为数组类型,以便您可以存储多个产品 ID


推荐阅读