Tag: 表示

Grunt开发EADDRINUSE

这是我的Gruntfile: module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), watch: { serve: { files: ['server.js', 'src/**/*.coffee'], tasks: ['coffee', 'develop'], options: { nospawn: true } }, css: { files: ['lib/less/main.less'], tasks: ['less'], options: { nospawn: true } }, test: { … } }, jasmine_node: { … }, develop: { server: { file: 'server.js' } }, coffee: { […]

Passport.socketio发现会话有问题

我试图从套接字访问会话,但似乎无法build立连接。 没有失败,授权失败,我得到失败callback与以下消息: failed connection to socket.io: No session found 我将把所有的代码放在这里,这样可以更容易地发现我做错了什么。 var express = require('express'); var app = express(); var http = require('http'); var socketio = require('socket.io') var passportSocketIo = require('passport.socketio'); var port = process.env.PORT || 3000; var mongoose = require('mongoose'); var passport = require('passport'); var flash = require('connect-flash'); var morgan = require('morgan'); var cookieParser = […]

在testingnodeJS应用程序时,应该如何设置Capybara.app?

我已经看到了一百万次: 如果你不使用Rails的话… require 'capybara/cucumber' Capybara.app = MyRackApp 但是如果你想testing一个node.js express v4应用程序什么是“MyRackApp”? 感谢您的回应

在不存储所有属性的情况下扩展Mongoose模型

我正在构build一个基于Node.js + Express + Mongoose的CMS。 我想要业务和数据访问方法的抽象层。 所以我有包含与数据库调用的方法的biz类。 这些调用是直接使用Mongoose模型,所以我的逻辑实体是Mongoose实体 。 问题是某个逻辑实体并不总是与其数据库实体相同 。 例如:我有一个名为“Item”的模型及其属性,这些属性必须存储到数据库中,这很好。 现在,我需要一个新的属性,一个名为“similar_items”的数组,最终可以包含其他项目的列表,但我不想将此属性存储在数据库中。 var itemSchema = new Schema({ id: { type: Number, index: true }, name: { type: String } }); var item = mongoose.model('Item', itemSchema); var data = new Item(); /* do stuff…. */ data.similar_items = blahblah; //I can't set this property as it […]

在快速应用程序中处理MySQL数据库连接的模式

我正在使用Express 4.x,以及最新的MySQL节点包。 PHP应用程序(我最熟悉的)的模式是有一些数据库连接公用文件被包含在内,连接在脚本完成后自动closures。 在快速应用中实现时,可能看起来像这样: // includes and such // … var db = require('./lib/db'); app.use(db({ host: 'localhost', user: 'root', pass: '', dbname: 'testdb' })); app.get('/', function (req, res) { req.db.query('SELECT * FROM users', function (err, users) { res.render('home', { users: users }); }); }); 请原谅缺乏error handling,这是一个原始的例子。 在任何情况下,我的db()函数都会返回将连接到数据库并存储连接对象req.db ,从而有效地为每个请求提供一个新对象。 这个方法有几个问题: 这根本没有规模; 数据库连接(价格昂贵)将以相当便宜的请求进行线性扩展。 数据库连接不会自动closures,并会在未被捕获的错误涓stream的情况下终止应用程序。 你必须捕捉它并重新连接(感觉像一个反模式),或者编写更多的中间件,一切必须调用pior来输出,以确保连接closures(反DRY,可以说) 我见过的下一个模式是在应用程序启动时简单地打开一个连接。 var […]

使用Express和Nodejs进行路由时出现404错误

我已经创build了一个基本的节点/快速应用程序,并试图实现基于不同文件中的逻辑分离的路线。 在Server.js中 var app = express(); var router = express.Router(); require('./app/routes/users')(router); require('./app/routes/events')(router); require('./app/routes/subscribe')(router); require('./app/routes/login')(router); app.use('/api',router); 在./app/routes/users.js中 module.exports = function(router){ router.route('/users/') .all(function(req, res, next) { // runs for all HTTP verbs first // think of it as route specific middleware! }) .get(function(req, res, next) { res.json(req.user); }) .put(function(req, res, next) { // just an example of […]

处理node.js / express中的windows-1250 URI

我的应用程序依赖于一个web服务来形成它的URI,所以有时它会出现(我相信是)一个windows-1250编码的string( /punk%92d )和expression失败,如下所示: 连接400错误:无法在Layer.match解码param'punk%92d' 所以我/punk'd每个链接转换成utf-8(例如: /punk'd ,所以不会引用冒犯的内容),然后再回到windows-1250来处理外部的web服务。 我使用iconv和iconv-lite方法尝试了这种方法,但是结果总是出现问题: /punk d /punk d等 这是一个使用iconv的示例: var str = 'punk'd'; var buf = new Buffer(str.toString('binary'), 'binary'); console.log(new Iconv('UTF-8', 'Windows-1250').convert(buf).toString('binary')); …和iconv-lite: console.log(iconv.decode(new Buffer(str), 'win1250')); 我知道使用binary是一个坏的方法,但我希望有什么, 什么都可以做的工作。 我明显地尝试了这个代码的多种变体,因为我对Buffers了解是有限的,更简单的事情是行不通的,比如: console.log(new Buffer('punk'd').toString('utf-8')); 所以我感兴趣的方式是处理expression式中的URI中的编码string,或者在node.js中转换它们的有效方法。

防止直接访问节点js中的html页面

我想阻止用户直接input页面的URL,并导致页面。 我如何在节点中实现这个function? 我知道,在Web应用程序中,将这些文件放在WEB-INF文件夹下可以防止直接访问它们。

如何查询orchestrate.io

我正在寻找一个简单而简单的数据库,用于一些在javascript中开发的游戏。 我在github的学生开发包中看到了Orchestrate.io 。 我find了一个合适的drivermodule nodejs编排并集成了它们。 问题来自我的数据查询编排。 我已经保存了分数并用db.list('collection')查询它们,但是这似乎没有响应所有的数据。 它让我感到有些价值不被返还。 我读了db.search('collection','query')函数。 但是我并不真正了解如何返回所有数据,因为我不想以特定的方式进行查询。 我的对象很简单,如下所示: {"name":"Jack","score":1337} 据我所知,当把这些值放到一个pipe弦乐集合中时,必须发送一个关键字。 但是我想查询整个集合,并根据分数获取后裔的值。 至于现在我最终在客户端sorting的结果。 我希望你们可以给我一些提示,可以查询特定的值!

Jade看* .jade文件吗?

我不知道Jade如何在内部工作,但我猜测它正在编译每个模板文件一次,然后为每个HTTP请求使用编译和caching版本。 当我运行我的Express应用程序并对我的* .jade文件进行更改时,无需重新启动应用程序即可在浏览器中看到更改。 这是如何运作的? Jade是否正在观看/views文件夹中的* .jade文件? Jade是否检查每个HTTP请求上的修改date并相应地重新编译模板? 翡翠实际上编译每个HTTP请求的HTML?