我正在构建一个聊天应用程序。
我正在将消息存储在DB中。但是我不想存储无限的聊天消息,只能存储100条消息。
我该如何限制,以便仅存储100条消息,如果显示新消息,则删除旧消息?
我是否对每个聊天消息都运行查询?
我应该在后台添加后台任务,该后台任务为每个用户运行sql查询吗?
数据库是否内置某些内容?
我是否添加某种索引?
如何在生产中完成?
答案 0 :(得分:0)
具有 sequelize 的最佳选择是使用 HOOKS , afterCreate(instance, options)
const Chat = sequelize.define('chat', {
username: DataTypes.STRING,
... // Other fields
}, {
hooks: {
afterCreate: (chat, options) => {
// check the total records and perform your operation based on that
// if its greater than 100 then remove it
}
}
});
确保使用
Chat.create();
或sequlize方法插入 数据,而不是原始查询,否则挂钩将无法工作
另一个不错的选择是每小时或每天设置 cron ,可以检查相应时间的邮件总数,然后执行操作。