Tag: 表示

如何使用promise在express.js中正确处理错误(string或对象)

我不是在我的第一个express.js应用程序,但我仍然找出最强大的方法来处理错误。 由于io.js是几个月的现实,我使用原生Promise来帮助自己asynchronous,下面的代码反映了这一点。 我的error handling中间件如下: router.use(function (err, req, res, next) { // in case err.custom is present, means is an "handled" Error, created by developers if (!!err.custom) { return res.status(err.code).json(err.message); } if (err instanceof Error) { console.error(err.stack); return res.status(500).send('Runtime Error'); // should be reported! } // last but not least, validation error res.status(400).send(err); }); 一个示例控制器是这样写的: function […]

sailsjs v0.11和express-validator

我有一些问题设置SailsJS使用快速validation中间件。 我最终使用了一个自定义中间件来实现它: customMiddleware: function(app){ var v= require('express-validator'); app.use(v()); } 任何build议让这个使用第三方中间件公认的方法工作,将不胜感激。 我已经通过几个问题,论坛post加文档,但上述方法是我能得到这个工作的唯一方法,所以我可以继续发展。 http://sailsjs.org/#!/documentation/concepts/Middleware https://github.com/ctavan/express-validator

启用socket.io时无法logging请求

我试图debugging一个socket.io的问题。 为了弄清楚发生了什么,我想logging所有请求,所以我安装了摩根。 var express = require('express'); var app = express(); app.use(require('morgan')('dev')); var path = require('path'); var http = require('http').Server(app); var io = require('socket.io')(http); // this line prevents morgan from logging logging工作正常,直到我需要socket.io – 最后一行显然阻止摩根看到所有的请求。 为什么socket.io阻止堆栈的其他部分看到请求? 编辑 : 这里的一些解释:显然socket.io太冗长了,并且默认closures了debugging。 如果我运行DEBUG=*在我的环境中设置,我得到更多的信息。 但是对于其他的堆栈来说,这似乎并不友好。

会话处理在平均堆栈中

我是新的MEAN堆栈,目前平均堆栈正在插入会话到mongodb: app.use(session({ saveUninitialized: true, resave: true, //cookie: { maxAge: 600 }, secret: config.sessionSecret, store: newmongoStore({ db: db.connection.db, collection: config.sessionCollection }) })); 但我想保存一些自定义variables在该会话中访问他们跨请求,我没有得到如何将其保存在会话中。 假设我想在会话中保存mydata ,我看到了一些例子,并尝试如下: req.session.mydata = 'projectdata'; req.session.cookie.mydata = 'projectdata'; 两者都不起作用。 另外我想更新maxAgevariables的每个请求到服务器端,如何做到这一点? 请帮助我。

我的导航菜单有问题。 我正在使用Bootstrap 3,JQuery 2.3.1,Jade,ExpressJS和Node.js

您好,我是翡翠模板Node.js全新的。 我正在尝试使用Express 4,JQuery,Bootstrap 3和Jade创build一个基本的入门级应用程序。 我正在尝试将navbar添加到我的layout.jade文件中。 它似乎添加了导航栏,但它不能正常工作。 当它崩溃时,我不能点击button切换链接列表。 此外,下拉链接也不起作用。 我在Google Chrome中检查时没有收到控制台错误。 下面我已经包含了我的layout.jade和我的index.jade文件。 layout.jade: doctype html html head title= title script(src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js') link(rel='stylesheet', href='/stylesheets/style.css') link(rel='stylesheet',href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css') script(src='//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js') body nav.navbar.navbar-default.navbar-fixed-top div.container div.navbar-header button(type='button', class='navbar-toggle collapsed', data-target='#bs-example-navbar-collapse-1') span.sr-only Toggle Navigation span.icon-bar span.icon-bar span.icon-bar a.navbar-brand(href='#') Brand div.collapse.navbar-collapse(id='bs-example-navbar-collapse-1') ul.nav.navbar-nav li a(href='#') Link block content index.jade: extends layout block content h1 #{8oo8s} p Welcome […]

使用相同的外键将多个loggingjoin连接表

我有3个模型sequelize数据库。 团队 – 主键:编号 参与者 – foreignKey引用Team – teamId TeamResult- foreignKey引用Team – teamId 每个团队可以有多个参与者,所以在参与者表中可以有多个具有相同teamId的logging。 与团队结果相同的情况。 我正在试图纠正一个查询,在那里我通过以下方式与所有参与者以及与团队相关的团队结果得到一个对象: { "id": 1, "teamName": "Awesome Team", //other team attributes.. "participants": [ { "id": 12, "teamId": 1, //other details }, { "id": 13, "teamId": 1, //other details }, ], "teamResults": [ { "id": 22, "teamId": 1, //other details }, { […]

有书架的Node.js; 使用ID数组设置多对多关系的值

我正在使用Bookshelf的Node.js来设置一个API。 请求中的JSON看起来像这样 { conversation: { user_ids: [1, 2, 3, 4] } } 会话对象如下所示: var Conversation = storeManager.bookshelf.Model.extend({ tableName: 'conversations', users: function() { this.belongsToMany(User) } }) 用户看起来像这样: var User = storeManager.bookshelf.Model.extend({ tableName: 'users', conversations: function() { return this.belongsToMany(Conversation) } }) 数据库有一个会话和用户表,以及一个具有user_id和conversation_id字段的conversations_users表。 所以我一直在阅读文档,我正在努力弄清楚如何创build一个与现有用户具有给定ID的关系的对话对象。 这是我的控制器迄今为止 ConversationController.prototype.create = function(req, res, next) { // Create the conversation Conversation.forge().set('users', req.body['conversation']['user_ids']).save().then(function(model) { […]

我可以将SQL语句存储在节点js中的单独文件中吗?

我想将所有的SQL语句存储在一个单独的( .txt也许?)文件中。 这将使我的代码看起来干净,更具可读性。 例: router.get('/', function (req, res, next) { var sql = // get SQL from a file connection.query(sql, function (err, rows, fields) { var row; if (!err) { row = rows[0]; } res.render('index', { … }); }) }); PS我不想将SQL语句存储在.js文件中。 先谢谢你

Browserify不会提出要求

我正在用node.js构build一个web应用程序并进行expression。 我想使用Browserify使我的本地模块在浏览器中可用。 我的应用程序是这样构造的: ├── app.js ├── lib │ ├── controller │ │ ├── home.js │ │ └── mixer.js │ ├── model │ │ ├── command.js │ │ ├── control.js │ │ ├── room.js │ │ └── user.js │ └── view │ ├── error.jade │ ├── index.jade │ ├── input.jade │ ├── layout.jade │ └── room.jade […]

在服务器端从Handlebars模板获取HTML代码

我的NodeJS应该发送来自用户的HTML电子邮件通知。 为了保持代码干净,我想从句柄模板中获取这些电子邮件的HTML代码,而不是将HTML代码硬编码到sendEMail方法(这看起来很丑陋)。 我需要服务器从这些.handlebars文件中获取HTML,但这不起作用。 这是我如何获取HTML代码 var handlebars = require('express-handlebars').create({}); var context = { title: 'T' } var template = handlebars.render('../views/emails/passwordReset.handlebars', context); console.log(template); Console.log(template)正在返回{} 这里是.handlebars代码: <h1>{{title}}</h1> 任何人都可以提供这个代码有什么问题的指导?