首页 > 解决方案 > Sequelize js如何使用带有模型的数据库函数

问题描述

我的用例是这样的,

  1. 用户可以查看菜肴。
  2. 每条评论都存储在一个名为 rating 的表
  3. 当一条新记录插入到评级表中时,Dish 表的整体评级列应更新为平均评级值。

我还浏览了 stack-overflow 和 GitHub 中的文档和一些问题。到目前为止我所做的是。

const db = require("../models");
const Sequelize = require('sequelize');

export async function create(req, res, next) {
    try {
        const body = req.swagger.params.body.value;
        const rate = await db.ratings.create(body, {
            fields: ['user_id', 'dish', 'overall', 'notes', 'createdAt', 'updatedAt']
        })

        const average = await Sequelize.fn('AVG', Sequelize.col('overall'))
        res.sendStatus(200);
    } catch (error) {
        console.log(error);
        res.status(500).json(error)
    }
}

我认为平均功能是

Sequelize.fn('AVG', Sequelize.col('overall'))

但我不知道如何在模型评级上调用它

标签: sequelize.js

解决方案


这是您可以使用的方式attributes

db.ratings.findAll({
    attributes : [ [Sequelize.fn('AVG', Sequelize.col('overall')),'overall'] ] // <--- All you need is this
}).then(data => {
    console.log(data);
})

有关更多详细信息:请阅读


推荐阅读