我是MongoDb的新手,并且一直在使用mongoose作为后端。不幸的是我遇到了这个问题,我希望ItemModel中的元素在CartModel中作为数组出现,用户可以删除并向该购物车添加更多项目。
这是我的CartModel代码:
linkPage
这是我的ItemModel:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ItemModel = mongoose.model('Item');
//cart id
//cart name
//cart total cost
//cart items
let cartSchema = new Schema(
{
cartId :{
type:String,
unique:true
},
cartName:{
type:String,
default:'Item Cart'
},
items:[{type:Schema.Types.ObjectId, ref:'Item'}]
}
);
mongoose.model('Cart',cartSchema);
这是控制器方法:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const defaultString = "NOT ASSIGNED";
let itemSchema = new Schema(
{
itemId :{
type:String,
unique : true
},
itemName : {
type: String,
default : defaultString
},
description : {
type : String,
default : defaultString
},
soldBy : {
type : String,
default : defaultString
},
cost : {
type : Number,
default : 0
},
rating : {
type : Number,
default : 1
},
category:{
type : String,
default : defaultString
}
}
);
mongoose.model('Item',itemSchema);
请提供帮助,并提前致谢
答案 0 :(得分:0)
所以你可以在这里做的是根据objectId
或类似itemid
或其他任何东西来映射这两个集合
购物车中可以有多个商品,但反过来却不可能,所以
一对多关系
这是一个Cart
和许多Item
所以您可以做的是在项目中给出cartId然后它会告诉该项目在结帐时属于哪个购物车所以包括cartid然后多个项目可以拥有相同的Cartid
您现在可以使用
ItemModel.findOne({
'CartId': req.params.CartId
}, (err, result) => {
return result.json();
}