Tag: devise模式

Mongoose:使用一个模型处理多个数据库

我想要的是具有相同的集合(相同的模式,确切的模型,不同的数据)和1个nodejs(expressjs + mongoose)的Web应用程序的任意数据库(50)。 示例简化情况: 我有: 一个Web应用程序(expressjs + mongoose)与User模型。 50个域50个带有users集合的数据库。 我想要达到什么样的行为: GET /api/users/ http请求正在到某个域(test-domain-39.myapp.com) 应用程序获取请求的域名(testing域39),不知何故mongoose理解,当我只是做User.find({isActive: true})在User.find({isActive: true})它想查询数据库39 所以我只想要一个抽象 。 我将db名称传递给mongoose,并继续使用User模型(正如我们通常在单数据库连接时所做的那样)和mongoose(如果需要的话)创build连接(如果它是对特定数据库的第一个请求),使其保持活动状态连接池中的下一个请求等 什么是最简单有效的方法来完成呢? 提前致谢!

使用Function.prototype.bind()部分应用mkdirp

我正在阅读关于节点devise模式的书籍,这里是第99页的一些代码: function download(url, filename, callback) { console.log(`Downloading ${url}`); let body; async.series([ callback => { //[1] request(url, (err, response, resBody) => { if(err) { return callback(err); } body = resBody; callback(); }); }, mkdirp.bind(null, path.dirname(filename)), //[2] callback => { //[3] fs.writeFile(filename, body, callback); } ], err => { //[4] if(err) { return callback(err); } console.log(`Downloaded and […]

如何在没有面向对象的情况下关联数值和function

我的函数init返回一个v8::Handle<Object> ,这个Object包含几个Handle<Function>属性,比如bar 。 var foo = require('foo').init({a:'a', b:'b'}); foo.bar('a'); 在我的插件代码中: Handle<Object> Bar (Arguments &args) { // !! how to access mystruct* p for current call? } Handle<Object> Init(Arguments &args) { HandleScope scope; mystruct* p = InitMyStructWithArgs(args); Object ret; // !! how to bind mystruct* p to Bar? NODE_SET_METHOD(ret, 'bar', Bar); scope.Close(ret); } 你会发现Bar,Obj,args都是独立的,它们之间没有相对的关系,所以我不能在mystruct*使用{a:'a', b:'b'} mystruct*

如何devise使用Node.js进行游戏配对

我使用node.js进行游戏配对(例如,多个客户端连接服务器,如果有多个玩家连接,或者连续踢30秒)。 目前,我使用套接字连接(这可以检测到意外丢失的连接)。 但我无法弄清楚配对的优雅方式: var net = require('net'); var _clients = new Array(); net.createServer(function(_socket) { _socket.on('data', function(_data) { //Parse client data _clients.push(_socket); setTimeout(function(){ _socket.write('kicked\n'); },30*1000); _socket.on('close', function(data) { //Delete _socket from _clients } }).listen(6969, '127.0.0.1'); setInterval(function(){ var pair = new Array(); while(_clients.length>2) { var _s1 = _clients.pop(), _s2 = _clients.pop(); // Pair _s1 & _s2 } […]

在蒙古最多访问

如何使用mongodb获取每天/每周/每月访问量最大的页面/条目 此解决scheme适用于统计信息,但不适用于访问最多的条目列表MongoDB用于存储大量指标/分析数据的方法 地图/减less太慢…或不? 谢谢

避免node.js web应用程序中的竞争条件

我想知道如何devise一个这样的Web服务: 假设我有一个服务器监听请求,它接收一些密钥并检查它是否被caching(例如使用某个数据库),如果不是它做了一些处理,则生成答案,将其存储在caching数据库中并将答案返回给客户端。 这似乎工作正常,但如果两个客户端请求相同的不存在的密钥会发生什么? 在这种情况下会出现竞争状况,所以看起来像 client 1 -> check cache DB -> generate answer -> store in cache -> reply to client client 2 -> check cache DB -> generate answer -> store in cache -> reply to client 避免此问题的一种方法是使用DB中的UNIQUE特性,因此无论何时生成第二个答案并写入数据库,都会发生一些错误。 这很好,但似乎更像是一个补丁,而不是一个真正的解决scheme。 特别是,设想一个产生答案需要大量处理的情况,那么其他的东西会更好。 我能想到的一个select是使用作业队列,所以无论何时收到一个密钥,密钥要么附加到现有的作业,要么将新的作业添加到队列中。 我一直在玩node.js几个星期,我很惊讶,我还没有发现这种用例的例子。 所以我想知道这是一个可接受的解决scheme这样的情况下,还是更好的存在?

模块化模式vs原型 – Nodejs?

我在Nodejs工作。 我曾经在modular pattern 。 编码简单易行。 注意 我的同事告诉Prototype模式是Nodejs和Modular模式最好的方法。 我的代码示例 module.exports = { get : funcntion(){ //stuff }, set : function(){ //stuff } } 题 什么样的模式对于实时Web应用程序来说是最好的,或者一般情况下是使用Nodejs的应用程序上下

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

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

如何避免使用dependency injection时使用types检查逻辑填充我的JavaScript代码?

我试图在Node.js应用程序中使用从强types语言学习的SOLID原则,并通过模块中的构造函数实现dependency injection。 没有一个编译器来帮助我,我发现自己冲动地写了types检查和空引用检查逻辑,以确保正确types的依赖关系被传入。 var _ = require('lodash'); var ExampleModule = function(dependencies) { var app, express, http; if(_.isUndefined(dependencies) || typeof dependencies !== 'object') { throw new ReferenceError('No dependencies object passed to the constructor. Actually passed: ' + typeof dependencies); } if(_.isUndefined(dependencies.express)) { throw new ReferenceError('The express module must be passed as the \'express\' property in the […]

如何处理在我想要之前返回的asynchronous代码?

我有一个函数,其中包含代码… db.query(query).then(results => { _.each(results, result => { db.query(anotherQuery).then( /* modify result based off anotherQuery results */ }); }); resolve(results); }); 当然,正在发生的事情是resolve(results))正在被运行,同时第二个对数据库的请求正在运行,这意味着承诺不会在返回之前添加额外的数据。 有没有一种模式可以用来避免这种情况? 我正在使用Sequelize,它是由Bluebird for Promises支持的。 这是一个我曾经遇到过的模式,我已经看过使用wait.for,但它似乎已经过时,并且不支持Promise 。