Articles of devise模式

如何在node.js中编写一个事件发送器,让您创build一个函数“myFunction”,但是在运行时调用成功或失败?

例如,我已经看到了这样的function,这是很方便的使用: myFunction(data). success(function() { // success! }). fail(function() { // fail! }); 我看不出一个明显的方式来实现。 在查看Node.js文档后,这是我的悲哀尝试: var EventEmitter = require('events').EventEmitter; var testEmitter = function(x) { var e = new EventEmitter(); if (x) { e.emit('success', 'got: ' + x); } else { e.emit('failure', 'no x passed') } return e; } 显然,当你试图调用它的时候,这是行不通的。 testEmitter('hello'). success(console.log('success!')). failure(console.log('failure!')); // TypeError: Object #<EventEmitter> […]

关系数据库devise到mongoDB / mongoosedevise

我最近开始使用mongoDB和mongoose为我的新的node.js应用程序。 在我努力适应mongoDB / noSQL思维方式(如非规范化和缺乏外键关系)之前,只使用了关系数据库。 我有这个关系数据库devise: **Users Table** user_id username email password **Games Table** game_id game_name **Lobbies Table** lobby_id game_id lobby_name **Scores Table** user_id game_id score 所以,每个大厅都属于一个游戏,多个大厅可以属于同一个游戏。 用户对不同的游戏也有不同的分数。 到目前为止,我的用户架构,我有以下几点: var UserSchema = new mongoose.Schema({ username: { type: String, index: true, required: true, unique: true }, email: { type: String, required: true }, password: { type: String, […]

nodejs并行callbackdevise模式

我试图find一个很好的模式来执行一堆并行任务。 让我来定义一些任务来举例说明。 任务a, b, c, d, e, f, g执行为a(function(er, ra){//task a returned, ra is result}) ,所以b到g 还有一些任务应该在某个任务完成后执行,我们称它们为ab, bc, abc, bd, bcd, af, fg ,表示当a和b返回ab(ra, rb)应该一次执行,当b和c返回时,应立即执行bc(rb, rc) ,如果a , b , c全部返回,则应执行abc(ra, rb, rc) 。 对于最简单的情况,如果只有a和b ,我可以这样做: (function(cb){ var count = 2, _ra, _rb; function update(){if(–count == 0) cb(null, _ra, _rb)} a(function(er, ra){_ra = ra; update()}); […]

Rails,Node.js跨服务器authentication

所以我正在做一个rails应用程序,也利用node.js实时function。 在节点应用程序上validation用户的最佳方法是什么? 我一直在考虑将会话ID保存在数据库中,然后进行validation,或者在页面中显示用户ID,然后在连接时将其发送给节点应用程序。 或者也许别的东西完全是最好的。 我使用mongoose为我的节点orm和mongoid的ruby。

Node.js的域驱动devise

我目前正在构build一个基于Node.js微服务的应用程序,我想利用域驱动devise作为构build单个服务的指导原则 。 我有几个问题如下: 据我所知,域层通常应包含存储库接口,然后应该在您的基础设施层中创build这些接口的具体实现。 这抽象出您的域层的底层存储/技术问题。 在我的项目的上下文中,由于JavaScript本身并不支持像界面这样的东西,因此如何才能实现类似的效果呢? 其中一项服务特别是通过OAuth处理authentication。 人们通常会将与OAuth相关的逻辑分类为应用程序服务吗? 或者它会属于基础设施层? 我的理解是,这不是与基础设施有关,也不是与核心领域相关,而是作为为客户提供服务的一部分。 因此,我已经把它放在应用程序层。 从第2点开始,OAuth相关实体/存储库(即代币/客户端)最好放置在哪里? 尽pipe它们在技术上不是企业关心的问题,但我仍然试图将它们与其他实体/存储库一起保留在域层中。 一些注释添加到上面: 我不喜欢使用TypeScript(如这里所build议的)。 我完全意识到,有些人可能认为JavaScript不适合DDDtypes的方法。 我熟悉一些陷阱,再次以DDD为指导。 在一个侧面说明中,我提出了以下项目结构,这个结构受到了Laravel一个基于DDD的项目的巨大启发: app/ —-app.js —-package.json —-lib/ ——–app/ ————service/ —————-oauth.js —————-todo.js ——–domain/ ————list/ —————-model.js —————-repository.js —————-service.js ————task/ —————-model.js —————-repository.js —————-service.php ——–http/ ————controller/ —————-list.js —————-task.js ————middleware/ —————-auth.js —————-error.js ——–infrastructure/ ————db.js ————logger.js ————email.js 我很想听听你对这个布局有什么想法。 我完全知道,项目结构的主题有点基于意见,但我总是热衷于听取别人的意见。

在javascript中使用asynchronouscallback模式的无限循环

假设我想发送一个asynchronousAJAX请求到服务器,当它响应发送另一个请求,并永远重复: function sendXHR(url, callback) { // Send XMLHttpRequest to server and call callback when response is received } function infinite() { sendXHR('url/path', infinite); } infinite(); 我假设在这里我们会很快耗尽堆栈空间,所以我怎样才能做到这一点(没有阻塞)? 传递callback而不是使用return的模式在node.js特别stream行。 人们如何创造无限循环? 我不相信大多数JS引擎做任何forms的尾部呼叫优化。

使用recursion模式循环与node.js

一直试图使用node.js迭代通过城市数组,并对每个方向(我然后JSON.parse抽象驱动器时间)作出一个迭代的请求谷歌的方向。 我需要find一种方法来做到这一点,否则我只是要求一次从每个城市谷歌的所有信息。 我在http://tech.richardrodger.com/2011/04/21/node-js-%E2%80%93-how-to-write-a-for-loop-with-callbacks上find了一个很好的模式/但不能得到callback工作。 正如你所看到的,即时通讯使用“显示”function来testing相同的。 我的代码如下: var request = require('request'); var fs = require('fs'); var arr = ['glasgow','preston','blackpool','chorley','newcastle','bolton','paris','york','doncaster']; //the function I want to call on each city from [arr] function getTravelTime(a, b,callback){ request('https://maps.googleapis.com/maps/api/directions/json?origin='+a+'&destination='+b+'&region=en&sensor=false',function(err,res,data){ var foo = JSON.parse(data); var duration = foo.routes[0].legs[0].duration.text; console.log(duration); }); }; function show(b){ fs.writeFile('testing.txt',b); }; function uploader(i){ if( i < arr.length ){ show( […]

Node.JS MVC – 在哪里放数据访问代码?

我现在有几个小型的Node.js / Express应用程序正在运行,但我从来没有满意任何数据库访问解决scheme。 我从包含数据库访问的“胖控制器”开始, 我尝试使用Mongoose的“胖模型”,但这严重污染了数据库访问的模型; 我尝试了一种我将用Java实现的DAO模式,并将模型转换回值对象以移动数据,但这并不是很习惯。 你在哪里认为Node.js MVCnetworking应用程序的数据库访问代码? 回来ActiveRecord,都被原谅了。

在Javascript中分享服务器和客户端之间的代码是什么意思?

我会诚实地说,在挖掘NodeJS的时候,我不太理解一个概念。 这个概念是关于NodeJS如何让我们在服务器和客户端之间共享代码。 这是什么意思? 这是否意味着我可以编写一个函数,我可能调用客户端,并将其作为远程方法调用,或者是否代码复制到客户端并执行? 有人可以给我一些直观的例子,我可以把我的头围绕吗?

使用Node.JS

昨天晚上我转储Windows 7和格式化我的硬盘驱动器端口到基于Linux的操作系统,纯粹是因为我想开始使用Node.JS 所以我已经安装Node.JS ,并做了一些testing的东西,http服务器和套接字等 我想要做的是构build一个与MVC框架紧密集成的HTTP服务器,但在开始之前,我需要学习如何在Node中高效地构build。 例如,在PHP作为我的框架,我会创build一个启动加载系统来加载所有的基类等,然后我会启动我的事件系统准备开始附加callback。 我会继续处理请求等,直到生成输出,然后发送到输出处理程序,将处理标头等 但是Node为这个全新的环境,而且我想知道在Node中构build一个系统的最佳实践。 我正在寻找的信息更多的是与devise结构有关,而不是实际的应用程序编码,如何加载lib库在哪里加载库等等 任何帮助表示赞赏。 到目前为止,我的Web应用程序正在顺利进行,我已经build立了我的应用程序相当传统和一点程序。 我已经开始创build一个目录结构,如下所示: <root> startup.js /public/ favicon.ico /images/ /stylesheets/ /javascripts/ /system/ init.js config.js /libs/ /exceptions/ http.js server.js /application/ /views/ /_override/ /errors/ generic.view /partials/ sidebar.voew index.view /controllers/ index.js /models/ users.js 这个目录结构就像大多数基于MVC的Web应用程序一样,所以使用这个方法我觉得很舒服。 启动文件是由节点执行什么作为入口点, node startup & ,看起来像这样: /* * Header of t he file, Copyright etc */ var […]