node.js - 为什么 sequelize 只返回一个结果?
问题描述
我在编写代码时遇到了一些问题,这里有一些信息: 模型:
'use strict';
module.exports = (sequelize, DataTypes) => {
const news = sequelize.define('news', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
title: DataTypes.STRING,
slug: {
type: DataTypes.STRING(64),
unique: true
},
body: DataTypes.STRING,
postedBy: DataTypes.INTEGER
}, {});
news.associate = function(models) {
models.news.hasMany(models.news_ratings, {
as: 'rate',
foreignKey: models.news_ratings.newsId
})
};
return news;
};
///////////////
'use strict';
module.exports = (sequelize, DataTypes) => {
const news_rating = sequelize.define('news_ratings', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: DataTypes.INTEGER
},
user: DataTypes.INTEGER,
rating: DataTypes.INTEGER,
newsId: DataTypes.INTEGER
}, {});
news_rating.associate = function(models) {
models.news_ratings.belongsTo(models.news, {
foreignKey: models.news.id
})
};
return news_rating;
};
控制器:
router.get('/news/:from/:count', (req, res, next) => {
if (Number.isInteger(Number(req.params.from)) && Number.isInteger(Number(req.params.count))) {
models.news.findAll({
offset: Number(req.params.from),
limit: Number(req.params.count),
include: [{
as: 'rate',
model: models.news_ratings,
attributes: [
[sequelize.fn('AVG', sequelize.col('rating')), 'rate']
]
}]
})
.then(response => {
console.log(response)
res.json(response)
})
.catch(err => {
console.error(err)
res.status(500).end()
})
} else next()
})
此代码返回此结果(然后获取 /news/0/1):
[{
"id": 1,
"title": "First new",
"slug": "demo:first_new",
"body": "New 1. This is demo ^=^",
"postedBy": 0,
"createdAt": "2020-07-22T13:53:48.000Z",
"updatedAt": "2020-07-22T13:53:48.000Z",
"rate": [
{
"rate": "-0.3333"
}
]
}]
但我的数据库中有 5 条新闻!...然后我获取 /news/0/5,我得到了这个:
[
{
"id": 1,
"title": "First new",
"slug": "demo:first_new",
"body": "New 1. This is demo ^=^",
"postedBy": 0,
"createdAt": "2020-07-22T13:53:48.000Z",
"updatedAt": "2020-07-22T13:53:48.000Z",
"rate": [
{
"rate": "0.0000"
}
]
}
]
看,汇率无效!它应该是-0.3333!
有人可以解释一下,为什么会发生这种情况以及如何解决这个问题?
解决方案
推荐阅读
- javascript - 将对象的显示数组反应到行跨度中的表
- android - Xamarin 按钮在网格内不可点击
- css - 如何同时控制 React 中多个元素的样式?
- android - RecycleView 在 android 片段中不起作用
- http - 如何在 Go 中实现 HTTP 转发代理
- python - 如何批量训练具有多个输入的模型?
- javascript - Vue渲染函数中如何定义一个v-slot?
- python - 如何使用python查找相同类型的所有元素
- apache-camel - Camel AWS 和 AWS2 组件之间的区别?
- r - R 加权 Kaplan Meier 曲线上的比例与 svymean 函数的比例