简体   繁体   English

猫鼬模型架构引用不起作用 - 电子商务模型

[英]Mongoose model schema referencing not working - Ecommerce model

I am creating multi vendor ecommerce platform, with the following schema.我正在创建具有以下架构的多供应商电子商务平台。

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');

how can i save multiple products while referring to multiple users?如何在引用多个用户的同时保存多个产品? Later i want to populate products based on the users.后来我想根据用户填充产品。

Your problem is in referencing the collection.您的问题在于引用集合。 In here when you compile your models在这里编译模型时

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

you use Product and for database collection you use AllProducts.您使用 Product,而对于数据库收集,您使用 AllProducts。 That's the problem so...try doing it like this这就是问题所以...尝试这样做

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

Give it a proper naming convention.给它一个适当的命名约定。

Also there is s typo here in this code.. here I have fixed it这段代码中也有错别字..在这里我已经修复了它

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}
    }
);

also in your user schema也在您的用户架构中

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' }]
  }
);

make products as an array type so that you can store multiple product ids将产品设为数组类型,以便您可以存储多个产品 ID

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM