在运行命令刷新数据库之后,Sail.js需要重新启动服务器

从这个问题来看, 使用Web服务器之外的模型来启动js我学会了如何从terminal运行一个命令来更新logging。 但是,当我这样做时,更改不显示,直到我重新启动服务器。 我正在使用sails-disk适配器和v0.9

根据源代码 ,当创build相应的Waterline集合时,使用sails-disk适配器的应用程序仅从文件加载一次数据。 之后所有的updatedestroy发生在内存中,然后数据被转储到文件,但不被重新读取。

这就是说,你的情况是,一旦你的服务器正在运行,使用你的CLI实例改变数据库文件( .tmp/disk.db )并不重要,因为解除Sails服务器将不知道关于更改,直到重新启动。

长话短说,解决方法很简单:使用另一个适配器。 我build议你去看看sails-mongo或sails-redis (尽pipe后者还在开发中),因为Mongo和Redis都有数据自动过期function( http://docs.mongodb.org/manual/tutorial/expire -data /,http://redis.io/commands/expire )。 另外, sails-disk不适合生产,所以迟早你需要别的东西。

随着时间的推移,完成删除“过期logging”的一种方法是在/config/bootstrap.js滚动自己的“类似于cron的工作”。 在伪代码中,它看起来像这样:

 module.exports.bootstrap = function (cb) { setInterval(function() { < Insert Model Delete Code here> }, 300000); cb(); }; 

这种方法的缺点是,如果它抛出将停止服务器。 你也可以看看kue 。