在节点需要mongoose

我担心 – 当我需要mongoose在一个模块和configuration相同,当我在另一个模块中创build模式和模块只是添加var mongoose = require('mongoose')和工作在mongoose具有相同的configuration,这怎么可能? 它虽然工作。 但是我很困惑它是如何工作的。 这不是指不同的mongoose的实例? 我试图做var express = require('express'); var app = express(); 在不同的页面,并尝试运行,但它遇到错误,即configuration不一样,为什么这是不同于在两个不同的模块需要mongoose和使用它。

从Node.js中的Promise(Bluebird)返回值

我正在学习Node.js,正在查看Promise模块。 我很新,所以请用不好的代码约定和东西。 我正在尝试使用restify构buildREST客户端API。 我附上了我的客户代码如下: 这是我的客户: // local functions function loadResult(err, req, res, obj) { //console.log(err, req, res, obj); var result = { 'err': err, 'text': obj }; console.log(result); return result; } function getClient() { if (client) { return client; } else { client = restify.createJsonClient(options); return client; } }; function RestClient(headers) { if (headers) { […]

nock.js – 如何匹配URL中的任何参数组合

我正在尝试模拟对此APIurl的响应 http://api.myapihost.com/images?foo=bar&spam=egg url参数组合可能会有所不同。 我试图拦截这个请求,并用一个空的对象作出回应。 nock('http://api.myapihost.com') .persist() .get('/images', '*') .reply(200, {}); 当我的testing用例运行时,我得到这个错误信息: Uncaught Error: Nock: No match for HTTP request GET /images?height=2500 我如何configurationnock来匹配URL参数的任意组合?

使用ElasticSearch javascript客户端创build索引,promise不会返回

从一个小时以来,这是一直让我疯狂的事情。 我正在开发一个涉及使用Javascript访问ElasticSearch的项目。 作为testing的一部分,我想创build一个索引。 这里是一个非常简单的代码片段,在我看来,应该这样做,并打印从ElasticSearch服务器返回的消息: var es = require('elasticsearch'); var es_client = new es.Client({host: "localhost:9200"}); var breaker = Math.floor((Math.random() * 100) + 1); var create_promise = es_client.indices.create({index: "test-index-" + breaker}); create_promise.then(function(x) { console.log(x); }, function(err) { console.log(err);}); 当我进入一个目录时,运行npm install elasticsearch ,然后用NodeJS运行这个代码,会发生什么,请求是否发生,但是由于某种原因,promise不会返回。 我希望这个代码运行到最后,并且一旦ES服务器的响应回来,就完成了。 相反,这个过程只是挂起。 任何想法为什么? 我知道一个索引可以通过添加一个文档来创build,但是这个奇怪的行为只是使我感到困惑,我无法弄清楚它的原因或意义。

无限滚动与Angularjs和mongoose – 性能

我有一个使用Mongoose和Expressjs从MongoDB使用$http.get() Angular获得的图像列表。 我做的很好,但对性能有疑问。 到目前为止,我find了两种方法来实现它: 使用skip 使用$nin 查询如下所示: // Using $nin: var skip = req.query.skip || []; User.find({ _id : { $nin: skip }}) .sort({ _id: -1 }) .limit(15) .exec(function(err, users) { if (err) res.json({ 'msg': 'Error loading users' }); res.json({ users: users }); }); 和: // Using skip User.find({}) .sort({ _id: -1 }) .skip(15) .limit(15) […]

用Swig呈现静态文件

我试图用NodeJS开发一个Blog。 我find了一个不错的HTML博客主题 ,并将所有文件都放到了视图文件夹中。 这是app.js的内容 var express = require('express'), app = express(), cons = require('consolidate'); app.engine('html', cons.swig); app.set('view engine', 'html'); app.set('views', __dirname + '/views'); //app.use(express.static(__dirname + '/views')); app.use(express.bodyParser()); // I'm using Express 3, not 4. app.use(app.router); app.get('/', function(req,res){ res.render('index', {menu_items:[{"link":"#","text":"TXT"},{"link":"#","text":"TXT"}]}); }); app.listen(3000); 此代码呈现index.html,并在index.html中呈现menu_items 。 但它并不像css和js那样呈现静态文件。 为了渲染它们,我正在评论app.use(express.static(__ dirname +'/ views')); 线。 这一次是渲染静态文件,但不是在index.html中渲染menu_itemsvariables。 您可以看到此存储库中的所有文件。 你能告诉我我错过了什么吗? **更新1 **我已经添加了这些行而不是那个注释行 app.use('/css', […]

如何join同步和asynchronous的世界?

我开始与NodeJs和我面临一个问题,我相信很多人可能已经解决了。 我有一个基本的NodeJs Web服务器,如果find一个文件服务文件,或404: var http = require('http'), url = require('url'), fs = require('fs'), mongoose = require('mongoose'), fileSystem = require('fs'), path = require('path'), util = require('util'), EventEmitter = require('events').EventEmitter; var mimeTypes = { "html": "text/html", "jpeg": "image/jpeg", "jpg": "image/jpeg", "png": "image/png", "js": "text/javascript", "css": "text/css"}; var server; var Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/test'); var db = mongoose.connection; […]

仅在Gulp任务中的文件夹中的一部分文件上使用Browserify

通常在使用Browserify时,如果要合并多个文件,请运行以下内容: gulp.task('build-tests', function() { var b = browserify({ entries: ['./lib/some_specs.js', './lib/some_more_specs.js'] }); b.bundle().pipe(source('specs.js')).pipe(gulp.dest('./dist')); }) 我想用dynamic创build的已过滤文件列表来replace条目,这样,每次添加一个我想要浏览的新文件时,就不必更新数组,而是自动执行此操作。 为此,我开始使用gulp-filter从文件夹中select我想要浏览的文件: gulp.src('lib/*.js') .pipe(gulpFilter('*_specs.js')) .pipe(concat('specs.js')) ); 但是因为这返回一个asynchronousstream而不是一个数组,所以你不能使用这个入口。 然后,我想我可以将单独的文件连接成一个虚拟文件,然后将其传递给Browserify。 喜欢这个: gulp.task('build-tests', function() { var b = browserify( gulp.src('lib/*.js') .pipe(gulpFilter('*_specs.js')) .pipe(concat('specs.js')) ); b.bundle().pipe(source('specs.js')).pipe(gulp.dest('./dist')); }) 但是这会抛出一个未处理的错误事件 – 也许是因为源文件在bundle方法运行之前没有被连接起来? 那么这就导致我问,是否有人有任何类似的经验或沿着这些方面的经验? 我很新的吞噬,所以任何指针也将不胜感激。 谢谢。

如何使用nodejs在mongodb集合中search重音字符

MongoDB将E和E视为两个独立的东西,所以当我searchE时,它不会findE。 有没有办法让MongoDB把它们看成是一回事? 我在跑步 var find =Users.find(); var re = new RegExp(name, 'i'); find.where('info.name').equals(re); 如何匹配包含重音字符的string并获得结果?

安装socket.io输出(node-gyp rebuild 2> builderror.log)|| (出口0)和重buildpath

我知道,有一些关于这个问题,我读了,但我没有find一个解决scheme来解决它的输出,我得到它不同于其他用户,因为我没有得到任何关于微软或其他东西的消息。 我得到的消息是: > ws@0.5.0 install E:\wamp\www\sandbox\chat\node_modules\socket.io\node_modules\engine.io\node_modules\ws > (node-gyp rebuild 2> builderror.log) || (exit 0) E:\wamp\www\sandbox\chat\node_modules\socket.io\node_modules\engine.io\node_modules\ws>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild / > ws@0.4.31 install E:\wamp\www\sandbox\chat\node_modules\socket.io\node_modules \socket.io-client\node_modules\engine.io-client\node_modules\ws > (node-gyp rebuild 2> builderror.log) || (exit 0) E:\wamp\www\sandbox\chat\node_modules\socket.io\node_modules\socket.io-client\node_modules\engine.io-client\node_modules\ws>node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild socket.io@1.2.1 node_modules\socket.io ├── debug@0.7.4 ├── has-binary-data@0.1.3 (isarray@0.0.1) ├── socket.io-adapter@0.3.1 (object-keys@1.0.1, debug@1.0.2) ├── socket.io-parser@2.2.2 (isarray@0.0.1, component-emitter@1.1.2, benchmark@1. 0.0, json3@3.2.6) ├── […]