首页 > 解决方案 > 如何订购包含模型计数的记录?

问题描述

我是 postress 的新手,并尝试使用 sequelize 用 nodejs 实现 postress,我是一个查询中的东西,实际上我需要使用包含模型计数对数据进行排序。

user = sequelize.define("users",
{
 ....different Field
});

const order = sequelize.define("orders",
{
.... different field,
 sellerId: {
  type: DataTypes.INTEGER,
  field: "sellerId",
  allowNull: false
},
});

order.belongsTo(user, { as: "seller", foreignKey: "sellerId" });
user.hasMany(order, { foreignKey: "sellerId" });

现在我需要获取用户和用户订单,然后按订单计数对用户进行排序,我尝试了以下操作

let result = await user.findAndCountAll({
    where: condition,
    attributes: [
       'users.*',
       [Sequelize.fn('COUNT', Sequelize.col('orders.id')), 'orders']
    ],
    include: [
    {
        model: order,
        attributes: [],
        required: false,
    },
    {
        other model
    }
    ],
    order: [
        ["orders", "DESC"]
    ],
    distinct: true,
    offset: 0,
    limit: 10
});

但我面临如下错误:(节点:20820)UnhandledPromiseRejectionWarning:

SequelizeDatabaseError:缺少表“订单”的 FROM 子句条目。

任何人都知道归档我的要求的原因或任何替代方法。

提前致谢。

标签: node.jspostgresqlcountincludesequelize.js

解决方案


推荐阅读