Controller 在请求过程中会丢失其状态。但是我们可以使用服务来跨请求保存对象吗?
我的用例是这样的:我必须维护一个 Twitter 流池(通过像 npm twitter 这样的库) 当用户点击 Controller 时,就会启动一个流。我想在某个地方维护一个所有流的池。服务目录看起来像是放置这些流(在数组中)的正确位置。
然后在点击另一个 Controller 时,我想从该数组中获取适当的流并销毁它,以便它停止流 API。
那么服务文件夹有用吗?或者我是否需要使用一些缓存库作为 here ?
编辑:
twitter 流代表与 twitter api 的事件且持久的连接。所以我不认为它们可以存储在数据库中(或缓存到辅助内存中)。
最佳答案
我认为您可以通过这种方式使用任何 require
模块,将其视为 OOP 类的实例,在 module.exports
中具有公共(public) getter 和 setter。
假设您有一个名为 myService.js
的服务:
var pool = []; // this will be initialized when the app starts
module.exports = {
addToPool: function(obj) {
pool.push(obj);
},
getPool: function() {
return pool;
}
};
然后任何 Controller (等)都可以访问该池:
var myserv = require('myService');
myserv.addToPool({'one': 'two'});
var pool = myserv.getPool();
但是,
我从未使用事件内存以这种方式存储内容。你的泳池要多大?您确定不想通过数据库来执行此操作吗?
另一个警告,我不确定不会有一些干扰,例如 pool
被一个用户发起的一种方法迭代,并被另一个用户发起的另一种方法更改等
关于node.js - sails JS 服务(在 api/services 目录中)可以用于跨请求保存对象吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47088391/