Tag: 表示

mongoose和restify – 返回json之前本地化string

我想基于node.js,restify和mongoose返回RestFul API中的多语言业务对象的本地化string。 我有要求将翻译的资源存储在我们的翻译资源服务器上,还需要支持这些业务对象的dynamic创build。 我发现了一个解决scheme,在创build或更新我的多语言业务对象时,在所有模式中使用单个pre-'ave mongoose中间件,轻松地在POST / PUT调用中插入i18n进程 – 这是可行的,因为我能够通过请求上下文到obj.save(req,callback)调用。 但是,我正在努力在简单的GET上插入i18n。 我想到了,并尝试了不同的方式,我可以在返回响应之前插入国际化,但是并没有find一个好的方法。 我想到的选项: 在一个mongoose中间件pre / post('init')中翻译: 问题:我无法访问请求上下文,因此不知道要返回的语言环境,所以我无法在此处进行翻译。 在toObject()/ toJSON {transform:}中转换: 同样的问题 – 我没有在这些钩子的请求上下文。 在每个资源的处理程序/控制器方法中进行翻译。 问题:复制,我必须在任何地方做,我真的更喜欢我可以在模型/架构图层上定义的解决scheme 在翻译/expression中间件到最后: 问题:我无法再访问mongoose模式元信息,所以我不知道要翻译哪些属性。 编辑:只是发现这个额外的方式: – 翻译自定义restify responseFormatter: 这似乎很好地工作,在reponseformatter我有权访问我需要的一切。 从build筑的angular度来看,这似乎有些不可思议,但是如果没有人有更好的主意,我会加上这个答案。 也许(希望)我失去了明显的东西… 感谢任何提示

Node.js,express.js&hogan.js:部分在第二次刷新后无法正确加载

我有一个快速的3应用程序运行良好,但有什么问题,当我第二次刷新网站。 var x = {footer:"footer", header:"header"} exports.index = function(req, res){ res.render("index.html", {jow: "ieps", partials:x}) } 当我第一次去我的网站时,一切都很好,所有的部分渲染很好。 但是,当刷新我有这个错误: Error: ENOENT, open '/Users/kevinvanhove/Documents/work/projects/basing/business/klanten/javascript/nodeJS/express/basing/views/<h2>wow</h2>.html' 但是,当删除xvariables并直接将对象文字添加到res.render参数列表中时,再次正常工作。 exports.index = function(req, res){ res.render("index.html", {jow: "ieps", partials:{footer:"footer", header:"header"}}) } 更新:index.html视图 {{> header}} <h1>jow en {{jow}}</h1> {{> footer}} 查看这个藤蔓快速浏览: https://vine.co/v/M7BYi75pdrh 有些见解将不胜感激,谢谢。

决定路线与参数的关键因素是什么?

我看不出在两种路线之间作出决定的基础。 我的问题是什么因素是决定之间的关键: 更多的路线 – 更less的参数 更less的路由 – 更多的参数 – 处理程序的逻辑 下面的两个样本是我的实际案例,但我认为这是一个普遍的问题。 我的基线是2路每个有2个参数: URI's: /poweronoff?id=4&val=1 /powerset?id=7&val=75 // app.js app.get('/poweronoff', mymodule.poweronoff); app.get('/powerset', mymodule.powerset); // mymodule exports.poweronoff= function(req, res){ setonoff(req.query.id, req.query.val, req, res); } exports.powerset = function(req, res){ setvalue(req.query.id, req.query.val, req, res); } 替代因子是具有3个参数的1条路线。 URI's: /power?action=onoff&id=4&val=1 /power?action=set&id=7&val=75 // app.js app.get('/power', mymodule.power); // mymodule exports.power = function(req, res){ if […]

NodeJS Express vhosts和更新app.js

我只是设置了一个NodeJS服务器,并希望使用Express的vhostfunction来实现简单的项目设置。 我希望能够为新项目创build一个新的目录,而不需要经过创build新的子域名的麻烦。 基本上,我希望能够到达node.domain.com/project1 project1和node.domain.com/project2的node.domain.com/project2 。 我现在正在运行位于根( node.domain.com/server.js )中的server.js ,并包含: var express = require('express'); var app = express(); app .use(express.vhost('node.domain.com', require('./project1/app.js').app)) .use(express.vhost('node.domain.com', require('./project2/app.js').app)) .listen(3000); 这一切工作正常,当我去node.domain.com/project1我得到node.domain.com/project1的结果,但每当我改变任何app.js文件中的东西,它需要重新启动( Ctrl+C后由node server.js )为它更新更改。 而app.js的内容是,例如: var express = require('express'); var app = exports.app = express(); app.get('/project1', function(req, res){ res.send('Hello World [/project1]'); }); 任何想法,为什么这是? 需要注意的一点是,我也在同一台服务器上运行Apache,而且我正在使用本指南来允许两台服务器在端口80上运行(但可通过不同的子域访问)。

快递validation错误与快速validation程序

我想在我的应用程序中使用express-validator 。 这是我的app.js代码: app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.logger('dev')); app.use(express.methodOverride()); app.use(app.router); app.use(express.bodyParser()); app.use(express.urlencoded()); app.use(express.json()); app.use(expressValidator()); 以下是我的路线 : module.exports = function(app) { app.post('/login', userController.login); } 这里是我的代码login : exports.login = function(req, res, next) { req.assert('email', 'Email not valid').isEmail(); var errors = req.validationErrors(); if (errors) { return res.redirect('/login'); } passport.authenticate('local', function(err, user, info) […]

events.js:130 throw TypeError('listener must be a function')

我想运行一个node.js得到这个错误 events.js:130 throw TypeError('listener must be a function'); 我的代码是, var connect = require("connect"); var http = require("http"); var app = connect(); // Logging middleware app.use(function(request, response, next) { console.log("In comes a " + request.method + " to " + request.url); next(); }); // Send "hello world" app.use(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello […]

快递不发送回应阿贾克斯后或得到

我有一些前端代码,如下所示: $.ajax({ url:target, data: zform.serialize(), dataTyp:'json', type:'POST', success:function(data, status, jqXHR) { $(".target", source).html(data.widget.url); source.find('.edit').hide() source.find('.saved').show(); }, error:function(jqXHR, textStatus, err) { alert(textStatus); }); 这find我的表单,序列化,并将其发送到所需的URL的服务器。 这工作正常,并且node.js服务器接收它。 然后在节点的请求处理程序中: m.Target.find({where:{id:linkId, UserId:req.user.id}}).success(function(target){ target.updateAttributes({target:url}).success(function(target){ try{ var response={status:"updated", widget:{url:target.url} }; res.send(response); res.end(); console.log("sent"); }catch(err){ console.log(err); } }); }); variables进来很好,数据库通过sequelize更新就好了,成功的方法被调用。 但客户从来没有得到回应。 它只是处于未决状态。 我已经尝试做这既GET和POST,我已经尝试res.json,res.send和res.write。 没有任何工作,我很困惑。

无法使用Node的Express访问Handlebars模板中的对象属性

我在Express框架下使用Handlebars的hbs模块: var hbs = require('hbs'); app.set('view engine', 'html'); app.engine('html', hbs.__express); 像这样设置我的视图variables: userModel.find({ twitter: username }, function(err, profile){ if(err){ return next(err); } res.render('profile.html', { profile: profile }); }); 如果我在模板中这样做: {{profile}} 我得到: { name: 'xxxxx', twitter: 'xxxxx', avatar: 'xxxxxxxx', _id: 531cd64568282e0000000001, __v: 0, links: [], booked: [] } 但是,如果我做一些简单的事情: <p class="profile-name">{{profile.name}}</p> 在同一个文件中,没有输出! 有任何想法吗?

Express socket.io强大的意思。坚持如何在forms上进行整合

我正在做一个吝啬的 server.js 'use strict'; /** * Module dependencies. */ var express = require('express'), fs = require('fs'), passport = require('passport'), logger = require('mean-logger'); /** * Main application entry file. * Please note that the order of loading is important. */ //Load configurations //Set the node enviornment variable if not set before process.env.NODE_ENV = process.env.NODE_ENV || 'development'; […]

SEO与Node.js的快递

我正在寻找向HTML中的漫游器提供内容,然后是所有其他的请求,只是渲染index.html ,让我的Backbone.js应用程序踢。 我最好尝试为Google,Facebook等创build一系列已知的机器人,然后如果用户代理不在该数组中,请呈现index.html ,或者在Node的Express中有可以说“这是一个真正的用户,而不是任何一种机器人“? app.use(function(req, res) { var ua = req.headers['user-agent']; // TODO res.render('index.html'); });