从一个模式计算一个值,并将该值放在另一个模式mongodb节点中

时间:2016-07-02 20:04:15

标签: javascript node.js mongodb express

var ProductSchema = new Schema({

            title: {type: String},
            rating : {type: Number},
            ingredients : { type: String}
});

var IngredientSchema = new Schema({

            title: {type: String},
            weightage : {type: String}
});

示例:在ProductSchema中,“成分”字段为:“水,锌,尿素,二氧化硅,钠”

每种成分由IngredientSchema

定义

示例:

title : Water | Zincum | Urea | Silica | Sodium
weightage: 5 | 7 | 3 | 2 | 9

现在我有一个计算产品评级的公式: [所有成分的重量总和] / [产品中成分的数量]

在我们的例子中:rating =(5 + 7 + 3 + 2 + 9)/ 5 = 5.2

现在在api中添加产品,我想根据Product的Ingredients字段计算评级,然后存储在数据库中。

怎么做?

1 个答案:

答案 0 :(得分:1)

您需要引用IngredientProduct架构。 使用mongoose populate。

var ProductSchema = new Schema({

        title: {type: String},
        rating : {type: Number},
        ingredients : { Schema.ObjectId, ref: 'Ingredient'}
    });

var IngredientSchema = new Schema({

        title: {type: String},
        weightage : {type: String}
    });

进一步阅读:here