如何在数据库序列中仅存储n条记录?

时间:2018-09-28 04:26:56

标签: node.js architecture sequelize.js

我正在构建一个聊天应用程序。

我正在将消息存储在DB中。但是我不想存储无限的聊天消息,只能存储100条消息。

我该如何限制,以便仅存储100条消息,如果显示新消息,则删除旧消息?

我是否对每个聊天消息都运行查询?

我应该在后台添加后台任务,该后台任务为每个用户运行sql查询吗?

数据库是否内置某些内容?

我是否添加某种索引?

如何在生产中完成?

1 个答案:

答案 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 ,可以检查相应时间的邮件总数,然后执行操作。