Sequelize.js 续写js如何在模型中使用数据库函数

Sequelize.js 续写js如何在模型中使用数据库函数,sequelize.js,Sequelize.js,我的用例是这样的 用户可以查看菜肴 每个评论都存储在一个名为ratings的表中 当一条新记录插入到评级表中时,盘表整体评级列应使用平均评级值进行更新 我还浏览了stack overflow和GitHub中的文档和一些问题。 到目前为止,我所做的是 const db=require(../models”); const Sequelize=require('Sequelize'); 导出异步函数创建(req、res、next){ 试一试{ const body=req.swagger.para

我的用例是这样的

  • 用户可以查看菜肴
  • 每个评论都存储在一个名为ratings的表中
  • 当一条新记录插入到评级表中时,盘表整体评级列应使用平均评级值进行更新
  • 我还浏览了stack overflow和GitHub中的文档和一些问题。 到目前为止,我所做的是

    const db=require(../models”);
    const Sequelize=require('Sequelize');
    导出异步函数创建(req、res、next){
    试一试{
    const body=req.swagger.params.body.value;
    常数率=等待分贝额定值。创建(主体{
    字段:['user_id','dish','total','notes','createdAt','updatedAt']
    })
    const average=等待Sequelize.fn('AVG',Sequelize.col('total'))
    res.sendStatus(200);
    }捕获(错误){
    console.log(错误);
    res.status(500).json(错误)
    }
    
    }
    这是如何与
    属性一起使用的:

    db.ratings.findAll({
        attributes : [ [Sequelize.fn('AVG', Sequelize.col('overall')),'overall'] ] // <--- All you need is this
    }).then(data => {
        console.log(data);
    })
    
    db.ratings.findAll({
    属性:[[Sequelize.fn('AVG',Sequelize.col('overall'),'overall']//{
    控制台日志(数据);
    })
    

    有关详细信息:

    这是如何与
    属性一起使用的:

    db.ratings.findAll({
        attributes : [ [Sequelize.fn('AVG', Sequelize.col('overall')),'overall'] ] // <--- All you need is this
    }).then(data => {
        console.log(data);
    })
    
    db.ratings.findAll({
    属性:[[Sequelize.fn('AVG',Sequelize.col('overall'),'overall']//{
    控制台日志(数据);
    })
    

    有关更多详细信息:

    首先,非常感谢您不断帮助我改进。=)我已将查询更改为此const average=wait db.ratings.findAll({where:{dish:1},attributes:[sequelize.fn('AVG',sequelize.col('total')]))然后执行的查询是这个SELECT AVG(
    总体
    )从
    ratings
    AS
    ratings
    WHERE
    ratings
    =1;但是我没有得到任何输出。我只得到一个空对象。但是我复制执行的查询并在phpmyadmin上运行,然后查询执行并给我输出。这里会出什么问题?“findAll”将给出所有列并传递“属性”将只提供提及的列。因此我没有提及任何列。这是原因吗?@PathumSamararathna,已更新答案,请先尝试第一件事,非常感谢您不断帮助我改进。=)我已将查询更改为此const average=wait db.ratings.findAll({其中:{dish:1},attributes:[sequelize.fn('AVG',sequelize.col('overall'))]})然后执行的查询是这个SELECT AVG(
    overall
    )从
    ratings
    AS
    ratings
    WHERE
    ratings
    =1;但是我没有得到任何输出。我只得到一个空对象。但是我复制执行的查询并在phpmyadmin上运行,然后查询执行并给我输出。这里会出什么问题?“findAll”将给出所有列并传递“属性”将只提供提到的专栏。所以我没有提到任何专栏。这是原因吗?@PathumSamararathna,已经更新了答案,请尝试那个