Tag: devise模式

nodejs:节点模块vs单例类

PRE:我已经读过NodeJS模块vs类,但是这更具体。 作为Node中一些重构的一部分,我有几个应用服务(DDD术语),这些应用服务在技术上被实现为Node模块。 由于(在一个DDD世界,可能是任何其他的事情)应用程序服务应该是单身人士,并且由于节点模块保证是1“实例”只,在我看来,这是一个好的适合(模块trivially实施'singletonness') 除了纯粹的观点之外,我有什么理由重新考虑将这些应用服务重构为适当的单例类(只要在javascript中可以保证“singletonness”)呢?

Express:如何将variables传递给安装的中间件

我刚开始玩Expressjs,我想知道如何将variables传递给安装的中间件/子应用程序。 在下面的例子中,我想把configuration对象传递给我的/ blog / index 在app.js中 var express = require('express'); var app = express(); //… var config = {} //… app.use('/blog', require('./blog/index') 在/blog/index.js中 var express = require('express'); app = module.exports = express(); app.use(express.static(… app.get('/', function(req, res, next) { //handle the req and res } 谢谢,

如何在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,都被原谅了。