Я новичок в MongoDb и использую мангуст для бэкэнда. К сожалению, я застрял с этой проблемой, когда я хочу, чтобы элементы из ItemModel были представлены в виде массива в CartModel, и пользователь может удалять и добавлять дополнительные элементы в эту корзину.
Вот мой код для CartModel:
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);
Вот мой ItemModel:
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);
Вот метод контроллера:
let addItemToCart = (req, res) => {
let itemId = req.itemId;
let item = getItem(itemId);
// getting item from ItemModel
// checking if its null or not, or present or not
let getItem = (itemId) => {
let item = null;
ItemModel.findOne({
'itemId': req.params.itemId
}, (err, result) => {
if (err) {
item = null;
} else if (result == undefined || result == null || result == "") {
item = null;
} else {
logger.info("item found successfully", "Item controller:cart add item", 5)
item = result;
}
});
return item;
}
// stuck here, how to add it to CartModel Collection
CartModel.populate('items.getItem').exec(
);
}
Пожалуйста, помогите, и заранее спасибо