sequelize.js - Sequelize js如何使用带有模型的数据库函数
问题描述
我的用例是这样的,
- 用户可以查看菜肴。
- 每条评论都存储在一个名为 rating 的表中。
- 当一条新记录插入到评级表中时,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'))
但我不知道如何在模型评级上调用它
解决方案
这是您可以使用的方式attributes
:
db.ratings.findAll({
attributes : [ [Sequelize.fn('AVG', Sequelize.col('overall')),'overall'] ] // <--- All you need is this
}).then(data => {
console.log(data);
})
有关更多详细信息:请阅读
推荐阅读
- python - 字典理解:更改列表值中的最后一项
- hadoop - 如何通过HIVE从txt文件中的行中删除重复项
- mysql - MySQL:如何在 SELECT cluase 中使用 Multi-SELECT?
- ios - 此应用包含一个应用扩展,该扩展指定了此 iOS 版本不支持的扩展点标识符
- swift - Swift 参数标签 '(_:, destination:)' 不匹配任何可用的重载
- pdf - 通过 Ghostscript 在 PDF 文件的每一页中插入页码
- java - 如何解决 http11.HeadersTooLargeException?
- jquery - 当有多个复选框时,如何使用 jquery 在 div 中显示数据?
- windows - 我可以在同一台服务器上安装、删除和重新安装相同的 SSL 证书吗
- angular - 未能在“HTMLInputElement”上设置“值”属性