Articles of sails.js

如何设置一个高需求的应用程序的node.js堆栈?

我目前正在使用超过25000人使用的Node.js堆栈应用程序,我们特别使用Sails.js框架,并且我们得到了MongoDB应用程序运行在具有30GB RAM的EC2实例,databse运行在Mongolab上基于AWS的集群位于EC2所在的同一区域。 我们甚至有一个1.5GB的Elastic Cache Redis实例存储。 所以我们面临的主要和巨大的问题是延迟 。 当我们达到请求应用程序并发用户的高峰时,我们得到了多个超时和启动应用程序达到超过7.5GB的内存,对HTTP的HTTP请求花费超过15秒(这是不可接受的),甚至当得到502和504响应nginx的。 我可以注意到Mongo写操作是我们的主要延迟问题,但是即使有需求峰值,GET请求也需要很长时间。 我无法访问生产服务器,我只有pm2(这实际上很棒)和New Relic警报获得了一个keymetrics监控工具。 所以,我想知道一些应对这些问题的路线图,也许应该提供更详细的信息,到目前为止,我可以说没有太多的用户时,应用程序似乎是稳定的。 什么是主要因素和设置要考虑? 到目前为止,我知道我应该做什么 ,但是我不确定细节和方式。 恕我直言: 尽可能caching。 延迟MongoDB写操作。 分离Mongo数据库,写入需求较高。 虚拟化? 调整节点设置。 在优化代码,我已经发布了另一个stackoverflow问题与我正在遵循的代码模式的一个例子。 你对生产应用有什么build议和意见?

node.js:有没有办法将HTML放入i18n-node JSON转换文件?

这个问题说明了一切。 如果我把HTML直接放入(JSON格式)的翻译文件中,像这样: "test_html" : "click <a href='http://stackoverflow.com/'>here</a>", 我在我的HTML中得到这个: click &lt;a href='http://stackoverflow.com/'&gt;here&lt;/a&gt; 我也尝试在我的翻译文件中结合这个: "test_html_placeholder" : "click %shere%s", 有了这个在我的HTML: <%= __('test_html_placeholder', '<a href="http://stackoverflow.com">', '</a>') %> 但得到了类似的结果。 我唯一能工作的就是这种笨拙: "test_html_pre" : "click ", "test_html_link" : "here", "test_html_post" : ".", 有了这个: <%= __('test_html_pre') %><a href="http://stackoverflow.com"><%= __('test_html_link') %></a><%= __('test_html_post') %> 但是这样做太麻烦了,几乎不值得去做,而且在某些语言中的字顺序会迫使我在我的翻译文件中放一些空的string,而i18n-node似乎并不喜欢,因为它吐出了关键字属性)名称,当它遇到一个空string。 我也尝试在符号前使用“\”作为转义字符,但是当我解除帆(重新启动服务器)时,我得到了无效的JSON错误。 任何想法,解决方法? 我正在使用sails.js,这不是我的决定,但我坚持它,它与i18n节点。 这个项目当天晚些时候考虑使用另一个图书馆,但不是完全不可能。

MongoError:拓扑被破坏了sailsjs

当我尝试创build这个错误显示: 错误(E_UNKNOWN)::遇到一个意外错误MongoError:在Server.insert处破坏拓扑(/ Users / oscargallon / Documents / developer / sails / reyesmagoswebpae / node_modules / sails-mongo / node_modules / mongodb / node_modules / mongodb-core / lib /topologies/server.js:797:49) 这是我的模型 module.exports = { attributes: { name: { type: 'string', required: true }, email: { type: 'String', required: true }, description: { type: 'string', required: true }, […]

使用OAuth2保护nodejs / sailsjs API

我用sailsjs开发了一个REST API,我想添加OAuth2授权来保护这个API。 我对OAuth很陌生,我不知道从哪里开始。 我发现可以用于这个目的的几个模块,例如oauth2orize和它的用法的一个例子https://github.com/aaron524/sails-oauth2-provider-example但我不完全理解这是如何工作的内部。 基本上,我将有几个客户端使用我正在开发的API: – 我信任的客户端,我希望与“资源所有者凭据授权”一起使用 – 我不信任的客户端,并使用授权码stream程 我正在考虑在sails应用程序中的Client模型中添加一个受信任的属性,然后当用户login到应用程序时: – 他将直接访问其资源(受信任应用程序的情况) – 他将被要求批准或拒绝应用程序访问其资源(不可信应用程序的情况) 这是一个好方法吗? 任何关于如何根据客户端可信级别select相应策略的指针? UPDATE 我已经在GitHub上安装了下面的项目,使用了我发现的几个教程和项目。 https://github.com/lucj/sails-oauth2-api 这个项目还没有function。 当用户通过应用程序使用API​​时,我仍然不清楚如何select正确的授权types(授权码与资源所有者的密码)。 如何将此检查整合到政策中? 我无法创buildOAuth endPoint(/ oauth / authorize,/ oauth / token)和对oauth2orize的调用之间的链接。 任何想法 ?

如何在Sails.js中embedded和写入mongo对象(多于一个级别)?

以sails.js为例, // Person.js var Person = { attributes: { firstName: 'STRING', lastName: 'STRING', age: { type: 'INTEGER', max: 150, required: true } birthDate: 'DATE', phoneNumber: { type: 'STRING', defaultsTo: '111-222-3333' } emailAddress: { type: 'email', // Email type will get validated by the ORM required: true } } }; 现在,我将如何添加电子邮件地址有一个家庭和办公室作为embedded式领域? 试图这样做: emailAddress: { { work: […]

什么是sails.js最好的authentication方法?

我正在寻找sails.js v0.10 rc8中实现身份validation的最佳方法。 是否有一个由sails.js定义的正式方法来实现这个? 我发现像sails-generate-auth模块,但它的文档不是很清楚。 我也发现像http://sethetter.com/user-authentication-with-sails-js/这样的教程,但似乎有一些兼容性问题与风帆v0.10

用于NodeJS的BPMN引擎类似于Activiti或jBPM

我正在寻找与Activiti或jBPM相媲美的Javascript或NodeJS世界中符合BPMN的标准业务stream程pipe理(BPM)引擎。 任何人有一个build议? 谢谢,

如何使用REST而不使用快捷方式蓝图使用searchsails.js模型?

我已经closures快捷键蓝图(/模型/ findAll不会工作),现在我想search模型,使用REST,但我没有find任何东西,有没有任何文件或我必须写我自己的意见呢? 谢谢

蓝鸟承诺 – 每个function

预先感谢您的帮助。 当使用蓝鸟承诺时,我有一系列的承诺运行。 在最后的承诺期间,我想为数组中的每个对象多次运行一个函数。 下面是伪代码: var userArray = [ { name: "John", email: "John@email.com" }, { name: "Jane", email: "jane@email.com" }]; var functionOne = function() { //returns Promsie object }; var functionTwo = function() { //returns promise object }; var createUser = function(user) { return User.findOrCreate({email: user.email},{ name: user.name, email: user.email }); }; functionOne() .then(functionTwo) .each(createUser(userArray)) […]

将定制的Express中间件(如jQuery-File-Upload)添加到Sails.js

我仍然很难理解如何将中间件添加到sails.js。 我听说过使用policies.js,创build自定义策略,添加到local.js等,所以有人请告诉我如何将jquery-file-upload-middleware添加到sails应用程序。 提前致谢