Tag: devise模式

如何避免大量的if-else在javascript(nodejs)

基于一个参数,函数应该从100个以上的json中select一个json文件,并向其他系统发出查询。 将会有数百个查询。 显然如果其他和开关将不可pipe理。 我在javascript中查找了策略模板。 var queryCode = req.param('queryCode'); if(queryCode == 'x'){ //do something } else if( queryCode == 'y'){ //do something } else if( queryCode == 'z') { //do something } // do something可能会变得很大 所以我想用战略模式来取代它。 这将是最好的devise。 在此先感谢有关此问题的任何build议。

node.js使用域驱动devise

我正在将应用程序从c#移动到node.js。 我正在学习node.js,所以我是一个node.js新手。 我正在阅读“域驱动devise的模式,原则和实践”一书,并发现了我目前的项目可以从中受益的大量信息。 例如,在本书中,有一个示例电子商务应用程序包含三个边界上下文:销售,运输和计费。 每个有界的上下文都负责自己的数据库,每个有界的上下文都运行在NServiceBus的一个实例中。 这似乎是一个很好的方法,因为一切都在相同的解决scheme,但不同的项目运行。 把这个翻译成node.js,我有一些混乱的地方。 1)我有一个很难find好的例子,像上面的电子商务例子一样,将dd.js和ddd合并在一起? 任何链接到良好的node.js示例代码将不胜感激。 这里的一些障碍是如何处理oop的差异。 2)如果在示例代码中,每个有界的上下文都在它自己的项目中,并在NServiceBus中运行,这是否意味着在将其转换为node.js时,我使用vscode作为GUI,我需要创build一个单独的父项文件夹(有界的上下文),并为每个有界的上下文提供一个不同的端口来监听,如果我想要所有有界的上下文在同一台服务器上运行,直到我需要相应地缩放? 3)NServiceBus允许消息和事件传回。 对于node.js,存在哪种服务总线技术,最好是开放源码,并且可以在基于Linux的机器上运行,这将提供NServiceBus提供并可靠的functiontypes? 我应该只看看使用rabbitmq来提供这个function,包括发送事件?

nodejs的pubsubdevise模式

我正在寻找一个简单的pubsub实现,我可以使用nodejs或simliar的方式。 我只需要在服务器端,所以没有花哨的需要。 我想要有以下能力: 模块A发布事件'X'模块B订阅事件'X'而不知道模块A的任何内容(除了可能发送了什么参数) 我testing了这个简单的实现https://github.com/federico-lox/pubsub.js/blob/master/src/pubsub.js真的是它的工作 我用简单的pubsub实现当前的问题是,我不能简单地订阅事件。 如果模块A发布了一个事件,但模块B是不需要的,它将永远不会收到来自模块A的事件。一旦模块A需要模块B发布一个事件,它当然是有效的。 但是这很不愉快。 所以简而言之:我正在寻找一种与nodejs配对的devise模式,并允许我非常独立地编写模块(松散耦合),可以通过事件进行通信。 你们有什么build议吗? 我也看了nodejs eventemitter,但找不到它的好用(也许我只是不能看到它?) 更新:我进一步了解进度,并提出了这个问题: emitter.js var events = require('events'); var emitter = new events.EventEmitter; module.exports = emitter; moduleA.js var emitter = require('./emitter.js'); require('./moduleB.js'); // this shows off my problem emitter.emit('moduleA'); moduleB.js var emitter = require('./emitter.js'); emitter.on('moduleA', function () { console.log('reacted to event from moduleA'); }); 这显示了我的“问题”,但我不确定是否有解决办法。 […]

Javascript:从函数实现单一的退出点

我想知道是否有一个干净的方式来实现一个函数在JavaScript中的单一退出点。 在普通的C中,可以简单地使用goto ( Linux内核 – 示例源 )。 一见钟情,人们可以使用for, break and labels和exceptions 。 1.和标签 var retCode = 0; single_exit: for(var done=true;done;done=false) { retCode = 1; break single_exit; } if(retCode !=0) { console.log('error happened. exiting'); return; } 2.例外 function SomeError () { this.retcode = 1; } SomeError.prototype = new Error(); try{ if(someThing) throw new SomeError(); } catch(e) […]

用于使用node.js编写用于图像上传的filter列表的devise模式

我在node.js中写了一个简单的图片上传器,并且expression了4.当文件发布时,封闭的图片将通过一系列filter运行: 这是一个可接受的MIMEtypes? (jpg,gif,png,tiff) 这是否有相应的可以接受的延伸? 这个图像是不是2兆字节? 该文件被上传截断了吗? 我习惯于在同步语言中做这种事情,我会通过一系列if来运行对象,如果有什么事情会返回false。 然而,在JavaScript中,相同的方法将导致发送多个头。 我通过在其他子句中嵌套filter来解决这个问题,但这很快变得非常笨拙。 这似乎是一个常见的devise模式,那么处理这样的事情的最好办法是什么? app.js: var express = require('express') , fs = require('fs') , bodyParser = require('body-parser') , serveStatic = require('serve-static') , multer = require('multer') , port = 80 ; var app = express(); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(multer({ dest: "./images/tmp" […]

Webpack在JS文件中引发一个奇怪的语法错误

我有一个简单的文件结构为我的JS文件: bundle.js src | — main.js — forms | — forms.js 我的main.js文件如下所示: let forms = require('./forms/forms'); forms.js文件如下所示: export default class Forms { test = () => { alert('Forms.test() executed!'); } } var forms = new Forms(); forms.test(); 这会引发以下错误: Hash: a1ed74e596de181cec27 Version: webpack 1.14.0 Time: 21592ms Asset Size Chunks Chunk Names ./static/js/bundle.js 277 kB 0 [emitted] […]

用Mongoose / MongoDB构build我的模型

最近我已经开始深入到服务器端,并且正在开发一个应用程序,我需要考虑如何规划我的模型。 我的用户是老师,仪表板中将有能力创build学生列表。 我的模式将包含更多的指令,以防止重复创build,但我在这里简化了它们。 以下是我迄今所尝试的: // Teacher Model const Teacher = new Schema({ fname: String, lname: String, email: String, }) // Student Model const Student = new Schema({ fname: String, lname: String, full: String, uuid: String grades: { classwork: Array, quizzes: Array, tests: Array } }) 这是我后端工作经验不足的地方。 这个设置对我来说并不合适。 说我去救学生时,会在数据库中的学生collections下创build一个新学生。 这是不理想的,因为学生应该以创build它的老师严格访问的方式进行存储。 我正在考虑在我的教师模式中创build一个名为“学生”(这将是一个数组)的新密钥,每次创build时都会将学生推入其中。 这对我来说是非常重要的,因为老师将来会有更多的能力,比如创build作业,给学生分级等等。我想用最好的实践来devise这个,确保老师的数据是从其他用户安全。

为什么使用Node.js EventEmitter而不是一个普通的函数?

我读过的关于节点EventEmitters的每篇文章都会谈到如何创build它们。 但是,我还没有看到为什么要使用它们而不是一个简单的函数的具体例子。 所以例如,这是我正在阅读的一本书中如何通过其构造函数在自定义对象上使用EventEmitter类的示例。 var util = require('util'); var events = require('events'); var AudioDevice = { play: function(track) { // Stub: Trigger playback through iTunes, mpg123, etc. console.log("playing song: " + track); }, stop: function() { console.log("song stopped"); } }; function MusicPlayer() { this.playing = false; events.EventEmitter.call(this); } util.inherits(MusicPlayer, events.EventEmitter); var musicPlayer = new MusicPlayer(); musicPlayer.on('play', […]

Azure服务总线相当于AWS

我正在将应用程序从c#移动到node.js。 我是来自.net背景的node.js新手。 我正在考虑将域驱动的devise模式合并到应用程序中。 发展,使我有了有限的环境和微服务的概念。 我想使用aws作为我的云提供商,但是在确定使用哪个工具来处理命令和事件处理时遇到问题? Azure有服务总线,这似乎工作很好。 是否有相当于aws的服务总线,或者我应该看看使用SQS?

Promise Chain Breaks w / .all()

我是相当新的承诺,并认为我处理了事情,但显然我没有。 下面的代码是为了获取X个表名(getTableName()),将它们传递给getData()并遍历每个表来获取数据。 然后,我调用Promise.all()来解决这些问题,并尝试将数据传递给链中的下一个链接(createFile()),但Promise.all()在移至createFile()后parsing。 这是“反模式”回来咬我的例子吗? 如果是这样的话,你们有没有人可以build议我应该如何重组,以便我能够完成我所要做的事情? 谢谢! exports.getRawDataForExport = function(data) { return new Promise(function(resolve, reject) { var getTableName = function() { return knex('monitored_parameter') .where('device_id', data.device_id) .whereIn('internal_name', data.param) .select() .then(function(rows) { if(rows) { var runningResult = {}; for(var i = 0; i < rows.length; i++) { var tbl = {"table" : 'monitored_parameter_data_' + rows[i].id, "param" : rows[i].display_name}; […]