Articles of 架构

如何根据订阅级别为不同的用户devise具有不同function集的Web应用程序?

根据订阅的不同,为不同用户启用不同function集的应用程序寻找一些架构模式的洞察。 我不是指angular色 – pipe理员vs用户vspipe理员 – 而是我的整个可用function集或容量可能会根据我的订阅而改变。 以github或freshbooks或firebase或heroku为例。 有多个计划。 免费计划A只能做X + Y,而付费计划B可以做X + Y + Z(还有10个以上),有偿计划C可以做W + X + Y + Z(每个有100个) 。 很明显,我不想将这些限制和特征烘焙到代码中,或者需要很长时间来构build,而且任何更改(计划之间的移动function或对各种function的限制)都会变成一场噩梦。 人们使用什么模式,以便用户: 只能使用那些与他/她相关的function 受限于他/她可用的限制 这些限制/function是否在订阅级别更改(上或下)时自动更改 看到加售机会(显示不可用的function,但可以购买)? 在这里寻找一个架构devise,欢迎使用Java,NodeJS,RoR或PHP。

我不能将数组推入mongoose模式

这是我的控制器,一个表格发送到这里的数据: exports.addrepair = function(req, res, next){ Person.findById( req.body.id, function (err, Person) { Person.update({id: req.body.id}, {$pushAll: { problem: req.body.problem , solution: req.body.solution , date_on: Date.now() }} ,{upsert:true},function(err){ if(err){ console.log(err); }else{ console.log("Added"); } }) }) } 该模式是: var Person = new Schema ({ name: String, Repair: [ problem: String, solution: String, date_on: Date ] }) 并不能推动任何修复人。 与console.log我可以看到所有的作品,但不是推。

重用callback/重用通道的参数

我想在不同的节点模块中重用一个RabbitMQ通道。 由于通道是asynchronous创build的,我不确定最好的方法是将这个通道对象“注入”到其他模块中。 如果可能的话,我想避免像DI容器这样的外部依赖。 下面,你会发现我的简化代码。 提前感谢您的任何build议。 web.js require('./rabbitmq')(function (err, conn) { … // Start web server var http = require('./http'); var serverInstance = http.listen(process.env.PORT || 8000, function () { var host = serverInstance.address().address; var port = serverInstance.address().port; }); }); rabbitmq.js : module.exports = function (done) { … amqp.connect(rabbitMQUri, function (err, conn) { … conn.createChannel(function(err, ch) { […]

在从UI写入数据库之前进行审阅

这更多的是关于devise方法的问题。 我有一个应用程序具有以下细节: 用户界面在Angular中 UI使用Node / Express中的api 数据库现在只是一个JSON文件。 我想从JSON文件移动到mongoDb。 我想要的是,每当有人使用UI对数据库进行更改时,我想在数据库更新之前查看这些更改。 达到这个目标的最好方法是什么? 这对我来说更容易与JSON文件,因为我在git上创build一个拉请求,我会审查所有的更改,然后更新。 我曾经想过的事情: 让UI写入一个单独的克隆集合(表),然后检查它们并相应地更新主集合。 不知道这是否是正确的做法。

Nodejs – 将基于Promise的架构与事件混合是错误的

我正在研究将会变得更大的nodejs应用程序。 对于高级Nodejs项目体系结构和结构,我找不到很多资源。 我想知道是否是一个反模式,在NodeJS中混合承诺的范例和事件。 如果有人拥有先进的项目架构或开源的大型Nodejs项目的资源,它可以真正帮助我。 最好的祝福。

WebRTC或WebSockets用于广播stream媒体video?

我的架构是[ arch0.dot ]: 一台笔记本电脑是[广播]向所有[JavaScript]客户端传输两个video和两个audiostream。 另外我有一个WebSockets连接聊天。 服务器[用Node.JS写入]必须: logging聊天logging(目前通过附加文件来完成) 录制video和audiostream(客户端目前通过MediaRecorder执行此操作 ,但要移至服务器) 相关: WebRTC vs Websockets:如果WebRTC可以做video,audio和数据,为什么我需要Websockets? 2017年下半年,哪种技术最适合这种常见的架构?

如何使用node.js创build用户模型?

我想创build一个模型来处理与用户有关的所有事情,从一个findOne()函数开始。 app.js: var u = new User(client); u.findOne(function(error, user) { console.log(error, user); }); 车型/ user.js的: var User = function (client) { this.client = client }; User.prototype.findOne = function (id, callback) { client.connect(); client.get('testkey', function(error, result) { var test = "hello@world.com"; callback(null, test); client.close(); }); }; module.exports = User; node.js抱怨findOne()将是未定义的。 创build这样的模型并为它们提供对象(如数据库池等)的正确方法是什么?

在我的项目结构中,我应该在哪里pipe理服务器端的高级algorithm/服务?

我正在使用RESTful API使用nodejs,expressjs,mongodb和angular。 这是我的项目结构。 — config — models — public —- css —- js —— controllers —— services —- views — routes // API route 一切都很好,因为我的API调用很简单,大部分的逻辑都是通过服务angular度来pipe理的。 但是现在我必须实现高级algorithm和一些逻辑服务器端,我不知道该怎么做。 我应该添加另一个服务文件夹服务器端? 你将如何pipe理它?

将接收的实时dynamic数据推送给10,000个用户?

我正在对我正在开发的一个新项目提出一些指导,要求低延迟和高并发性。 该项目涉及从第三方供稿接收实时数据,经过一些基本处理和存储后,将这些值发送给网站上当前活动的所有用户。 数据通过HTTP Push到达,我目前的计划是使用Node.js接收这些数据,然后通过algorithm运行数据,然后更新某种数据库中的相关数据。 最后,更新通过websocket发送给网站的所有连接用户。 现在,我试图让这个可扩展性能够同时处理超过10,000个连接的用户,全部通过websocket连接,并且每3秒发送一次更新。 鉴于每个用户在此期间都可以与Web应用程序进行交互,这将导致许多请求来回。 现在,除了我所拥有的高层次的基本概念之外,决定将Ruby on Rails作为网站框架和节点j来处理它的“活力” – 我有点卡住了。 我不知道要使用什么样的数据库(我想这将是一个非关系数据库快速存储),我不知道如何构build这样一个设置的具体细节,以及如何实现逻辑。 所以我的问题是: 为了实现我的目标,我该如何构build这样一个应用程序,以及为了使其具有可伸缩性和实时性,我需要了解哪些内容? 非常感谢您的帮助。

使用rabbitmq与multithreading之间的差异

如果我错了,请纠正我,但是,我正在Ruby中开发一段时间,其中最明显的缺点之一是缺lessmultithreading。 最近我一直在探索节点js,特别是它的非阻塞IO“function”。 我的问题是: 为什么要使用单线程语言并使用rabbitmq来asynchronous实现,如果只能使用像js这样的multithreading语言,那么可以同时触发1000个请求并同时完成它们? 节点js是否有其他multithreading语言的创新? 我想我真正要问的是:节点js非阻塞IO和multithreading之间有区别吗?