sequelize联表查询如何通过JSON列某个属性排序?
应该怎么样通过Task表time进行排序, 下面的查询应该怎么写?
const { Sequelize, Model, DataTypes } = require('sequelize');
const sequelize = new Sequelize({
dialect: 'mysql', // support: mysql, mariadb, postgres, mssql
database: 'test',
host: 'localhost',
port: 3306,
username: 'username',
password: 'password',
sync: { alter: true }
});
class Task extends Model {}
Task.init({
title: Sequelize.STRING,
data: Sequelize.JSON,
uid: {
type:Sequelize.STRING,
primaryKey: true,
}
}, { sequelize, modelName: 'task_test' }
);
class User extends Model {}
User.init({
username: Sequelize.STRING,
uid: {
type:Sequelize.STRING,
primaryKey: true,
}
}, { sequelize, modelName: 'user_test' }
);
Task.sync({ alter: true })
User.sync({ alter: true })
User.hasMany(Task,{ foreignKey: 'uid', targetKey: 'uid' }); // 将uid添加到Task模型
Task.belongsTo(User, { foreignKey: 'uid', targetKey: 'uid' }); // 同样会将uid添加到Task模型中
// 假设Task的数据结构是
// {
// title: 'test',
// uid: '1'
// data: { time: '1583265819366' }
// }
// 创建测试数据
User.create({ username: 'jack', uid: '1'})
User.create({ username: 'rose', uid: '2'})
Task.create({ title: 'a', uid: '2', data: { time: '1583265819366' }})
Task.create({ title: 'b',uid: '1', data: { time: '1583265819399' }})
// 应该怎么样通过Task表time进行排序, 下面的查询应该怎么写?
User.findAll({
where: {
},
include: [Task],
order: []
}).then((items) => {
console.log(items)
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论