从这个问题Sails js using models outside web server我学会了如何从终端运行命令来更新记录。但是,当我这样做时,更改不会显示,直到我重新启动服务器。我正在使用sails-disk adapter和v0.9
答案 0 :(得分:2)
随着时间的推移完成删除“过期记录”的一种方法是在/config/bootstrap.js
中滚动自己的“类似cron的工作”。在psuedo代码中,它看起来像这样:
module.exports.bootstrap = function (cb) {
setInterval(function() { < Insert Model Delete Code here> }, 300000);
cb();
};
这种方法的缺点是,如果它抛出它会停止服务器。您也可以查看kue。
答案 1 :(得分:2)
根据source code,当相应的Waterline集合is being created时,使用sails-disk
适配器的应用程序仅从文件加载一次数据。之后,所有update
和destroy
s都发生在内存中,然后数据被转储到文件中,但不会被重新读取。
也就是说,在您的情况下发生的情况是,一旦您的服务器运行,使用您的CLI实例更改数据库文件(.tmp/disk.db
)无关紧要,“因为提升Sails服务器赢了”知道这些变化,直到它重新开始。
长话短说,解决方案很简单:使用另一个适配器。我建议您查看sails-mongo或sails-redis(虽然后者仍处于开发阶段),因为Mongo和Redis都有数据自动过期功能(http://docs.mongodb.org/manual/tutorial/expire-data/,http://redis.io/commands/expire )。此外,sails-disk
无论如何都不适合生产,所以迟早你需要别的东西。