我正在开发一个使用mongodb数据库的Web应用程序,并在node.js中使用mongoose ... 现在,我正在尝试构建评分功能,在此功能中,人们可以对商店进行评分并提供有关该商店的一些评论。 这是结构:
rate: {
author: req.body.author,
text: req.body.text
}
要对其进行更新,我使用的是“ findOneAndUpdate”功能,但是,总是在执行此操作时,新的覆盖率会覆盖现有的速率...你们可以帮助我吗?
答案 0 :(得分:1)
您可以在这里做。我只是举例说明
型号
//Model
const ratingSchema = new mongoose.Schema({
author: { type: String, required: true },
text: { type: String, required: true }
});
const productSchema = new mongoose.Schema({
name: { type: String, required: true },
description: { type: String },
rating: [ratingSchema],
price: { type: Number, default: 1 },
});
module.exports = mongoose.model('Product', productSchema );
现在您可以推送一个新数组
控制器
const ProductModel = require('./models/product');
const { id } = req.params;
const { author, text } = req.body;
PersonModel.update(
{ _id: id },
{ $push: { rating: { author, text }} },
done
);
更多关于:https://mongoosejs.com/docs/api/array.html#mongoosearray_MongooseArray-push
答案 1 :(得分:0)
尝试这个
模型
const schema = new mongoose.Schema({
name: String,
description: String,
price: Number,
rating: [{
author : String,
text : String
}]
});
module.exports = mongoose.model('Product', schema );
在请求处理程序中
const Product = require('./models/product');
const { id } = req.params; //product ID
const { author, text } = req.body;
const product = Product.findById(id);
product.rating = [...product.rating,{ author, text }]
product.save();
答案 2 :(得分:0)
一种方法是使用常规JS,您可以简单地将要更新的文档存储在变量中。然后,在对变量调用[{"ModelType": "Bar"}]
之前,在https://thehost/dosomething/enumerable
字段上使用push
方法。