Tag: 表示

在多个expressjs路由中共享elasticsearch客户端

我试图通过创build单独的文件来将我的巨大的expressjs路由重新组织成更小的块。 但是,有几个需要连接到elasticsearch客户端来执行search: 路线/ index.js var router = require('express').Router(); var models = require("../models"); var es = require('elasticsearch'); var es_client = new elasticsearch.Client({ host: 'localhost:9200', log: 'trace' }); router.get('/search', function(req, res) { // Do search in elasticsearch // es_client.search({……}); }); module.exports = router; 路线/ user.js的 var router = require('express').Router(); var models = require("../models"); var es = require('elasticsearch'); […]

检查快速请求数据是否是数组

我正在使用Express 3.x API服务器(不要问我为什么不升级到4.x;我不能控制这个),而且我试图实现对批量请求的支持一个特定的终点。 端点目前支持常规请求(需要一个JSON对象),但是我希望它也能够获取JSON对象的数组,例如: POST /api/posts Body: [ { "title": "Hello World", "text": "blah blah" }, { "title": "Hello World 2", "text": "blah blah blah" } ] 当我尝试使用req.body访问请求的单个请求的req.body ,我可以检索数据就好(这只是一个常规的JSON对象)。 但是,当我发送数组时,我发现数据被parsing为对象(?)而不是数组。 req.body = { "title": "Hello World", "text": "blah blah" }; typeof req.body; // object req.body.toString(); // [object Object] req.body = [ { "title": "Hello World", […]

用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', […]

NodeJS停留在上传图像

我有一个节点代码来上传图片。 图像大小为10〜200K。 正如你所看到的你一点都不大。问题是,看起来Node在长时间(可能是10分钟)上传时很忙,并且不会响应新的请求 。 该代码是Android应用程序使用的JSON API的一部分。 var fs = require('fs'); exports.upload = function(req, res){ …. var rawBody = new Buffer(''); req.on('data', function(chunk){ rawBody = Buffer.concat([rawBody, chunk]); }); req.on('end', function(){ winston.info('on end of uploading moment'); fs.writeFile(filepath, rawBody, 'binary', function(err){ if(err) winston.error(err); else{ db.updatesomething(); } }); });

Mongoose:在find()之后填充

我是新来的mongo和节点js,这是我想要做的: 该API将根据查询来检查数据库中是否存在现有条目。 (a)如果没有现有文档,则创build一个新文档,填充,发送给客户端。 (b)如果文件存在,则返回文件,填充,发送给客户端。 问题:在情况(a)中,创build文档后,API向客户端发送“null”。 可疑: .populate()&.exec()在API完成创build新文档之前运行。 代码片段返回null: console.log('Inside IF' + video_res); // returns null 解决这个问题的最好方法是什么? model_video.findOne( video_entry, function(err, video_req) { // Send Back Object ID if (err) res.send(err); if (!video_req) { // Does not work console.log('—–STATUS : No Video Found'); model_video.create(video_entry, function(err, video_res) { console.log('Call back activated'); if (err) res.send(err); console.log('Response is ' + […]

使用passport-google-oauth2与Facebook和Google进行身份validation

我正在尝试使用passport-google-oauth2和passport-facebook分别passport-facebook和Google进行身份validation。 我的auth文件夹的项目结构如下所示: auth/facebook index.js login.js verifyCallback.js auth/google index.js login.js verifyCallback.js auth / google代码如下所示: verifyCallback.js var User = require('../../models/user'); module.exports = function(accessToken,refreshToken,profile,done){ function findOrCreateUser(){ console.log(profile); User.findOne({'google.id':profile._json.id},function(err,user){ if(err){ console.log("An error occured when logging in with google"); console.error(err); done(err); } else if(user) { console.log("User exists in google verify callback"); console.log(user); done(null,user); } else{ console.log("Creating a new user in […]

如何使用i18n-node在模块化快递应用程序中划分区域文件?

我正在使用i18n-node来翻译一个多语言的快速networking应用程序。 i18n-node包允许你为包含应用程序界面中所有string的所有语言环境json文件指定一个文件夹。 假设应用程序变得越来越大,将分隔长整型语言区域设置json(将所有应用程序string保存为单独的文件)将是理想的,每个文件都驻留在自定义模块文件夹中。 有没有办法指定多个区域文件夹/文件? 欢呼Ajar

Common.js和Node.js的工厂模式

我明白了,我希望有一个工厂在一个地方pipe理我所有模块的依赖关系,而不是在我的代码中使用大量的语句。 我已经看过一些依赖于AMD的方法,但是我想知道如何使用node.js / express与OOB模块加载器(我认为它使用common.js)结合使用。 我一直在想着做这样的事情: module.exports = { lib:[], load:function(name){ if(this.lib[name]!==undefined && this.lib[name]!==null){ return this.lib[name]; } switch(name) { case 'express': this.lib[name] = require('express'); break; case 'morgan': this.lib[name] = require('morgan'); break; case 'body-parser': this.lib[name] = require('body-parser'); break; } console.log(this.lib); return this.lib[name]; } }; 有人说这不仅仅是一个工厂的中介模式,我只是想说明一下我的观点。 我的基本要求是处理来自系统中单个位置的所有依赖关系,如果需要更改依赖关系,则只需在此文件上对其进行更改,然后通过整个系统自动更新。 那么有没有更好的方法来处理这个问题? 任何已经完成这个方法的实现? 谢谢!

在达到路线时,您应该将逻辑放在Express应用程序中?

我一直在阅读一些Node.JS,Express教程,我意识到一些有趣的东西。 当在应用程序中做一些逻辑时,他们似乎总是build议在请求到达时将逻辑放在路由中。 例如,在本教程中 ,一些逻辑甚至变得相当长: //Delete a book app.delete( '/api/books/:id', function( request, response ) { BookModel.findById( request.params.id, function( err, book ) { return book.remove( function( err ) { if( !err ) { console.log( 'Book removed' ); return response.send( '' ); } else { console.log( err ); return response.send('ERROR'); } }); }); }); 有没有更好的方法来组织这个逻辑? 例如,你可以把逻辑放在另一个文件中(考虑到我的项目在一些路由中需要很多的逻辑)? 如果是的话,你怎么能把它引入到路由文件中呢?

如何在本地禁用passportjsauthentication

我在我的本地testing我的基于MEAN堆栈的应用程序。 对于使用passportjs的身份validationfunction。 但是,在debugging时,我必须login每次我重新启动服务器。 有没有一个简单的configuration,我可以做,禁用passportjs没有chaning我的代码很多。