node.js - sails JS 服务(在 api/services 目录中)可以用于跨请求保存对象吗

标签 node.js twitter sails.js

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/

相关文章:

javascript - 通过 CRUD API 分页

Windows Azure Node.js 调试

node.js - 无法加载文件或程序集“System.ValueTuple Visual Studio 2017 15.8 Node js 项目”

javascript - 无法分享包含引用和作者的推文(FCC 随机引用机)

java - Twitter4j API : setMaxId() not working properly

node.js - 如何在MongoDB中的数组对象中查找包含字符串的集合记录?

node.js - Stripe : Whats the different between Source vs. 卡 vs. 银行 vs 付款方式?

javascript - 为什么这个正则表达式返回匹配?

swift - call//Twitter 中参数 #1 缺少实参

javascript - Sails.js:将一对多关联模型插入 MongoDB