【发布时间】:2017-10-05 21:35:25
【问题描述】:
我有一个看起来像这样的猫鼬模式:
var mongoose = require('mongoose');
var _ = require('lodash');
var Schema = mongoose.Schema;
var shopSchema = new mongoose.Schema({
name: {type: String, trim: true},
description: {type: String, trim: true},
rating: Number,
ratingsData: [{type: Number}]
});
shopSchema.methods.rate = function(rating){
this.ratingsData.push(rating);
this.rating = _.mean(this.ratingsData);
return this.ratingsData;
}
module.exports = mongoose.model('Shop', shopSchema);
rate 方法应该将传递给它的值附加到 ratingsData 字段,然后返回该数组的平均值。我遇到的问题是每次调用该方法时,this.ratingsData 只是一个空数组。由于某种原因,没有保存以前的值。因此,我得到的平均值始终是传递给该方法的评分。
我做错了什么?
【问题讨论】:
-
如果您尝试将数据插入数据库,请执行插入或保存到数据库。在事件尝试检索数据和计算平均值之前。我没有看到任何保存功能。
-
您可以在向数据库插入值后执行操作。我无法理解您是如何同时实现这两个目标的。
标签: node.js mongodb mongoose schema