Tag: 表示

Mongoose API通过_id获取数组中的嵌套项

我正在用Express和Mongoose(前面的Backbone)构buildapi。 我有一个Mongoose用户模型,其中包含一个名为“订单”的数组。 我需要设置一个将通过ID读取单个订单的创build方法。 当我导航到: http://localhost:3000/test/ 我得到以下login用户: { "__v": 0, "_id": "537d09a1fe47a00000c54514", "kittenType": "Grumpy", "local": { "petname": "Smeagol", "password": "$2a$08$X4sF5UmYZ3/2cxfRzpPcq.pphYFRKcb.6xBGupdUyUMgWJlFSr/uq", "email": "julie@gmail.com" }, "orders": [ { "title": "Big Max Fountain", "description": "Large capacity drinking fountain", "quantity": "2", "price": 500, "_id": "53837e9e681808e6ea9f9ca4", "modified": "2014-05-28T23:49:10.232Z" }, { "title": "Lotus Fountain", "description": "Tranquil pools of water", "quantity": "1", "price": […]

在Node.JS和Express中的HTTPS服务器上拦截HTTP响应

我刚刚开始与node.js和expression,我正在做一个简单的HTTPS服务器。 我一直在使用nginx一段时间,当我向HTTPS端点发出HTTP请求时,出现“400 Bad Request”错误。 但是,使用node.js时,请求永远不会结束。 如何拦截Express中的HTTP请求,以便能够生成“400错误请求”响应? 这是我的代码: var express = require('express'); var https = require('https'); var fs = require('fs'); var port = process.env.PORT || 8080; var tls_options = { key: fs.readFileSync('certs/server.key'), cert: fs.readFileSync('certs/server.crt'), ca: fs.readFileSync('certs/ca.crt'), requestCert: true, }; var app = express(); var router = express.Router(); router.get('/', function(req, res) { res.json({ message: 'Checkpoint!!' }); }); […]

Sails.js:res.attachment + res.redirect(附加文件并redirect)

我试图在我的应用程序中有一个控制器动作,一个用户点击一个button,附加请求的文件,并redirect在一个控制器的行动。 虽然我遇到了麻烦,因为如果我在res.attachment() ; res.send()之后放置res.redirect res.attachment() ; res.send() res.attachment() ; res.send() ,文件将不会发送,如果我忽略了redirect,文件发送但没有发生redirect。 我应该如何处理?

如何访问basicAuth内部的快速路由

我的NodeJS服务器,使用express,有一堆条目来指定各种路由: app.post('list_streams.json', auth, stream_handler.list_streams); app.post('add_stream.json', auth, stream_handler.add_stream); app.post('delete_stream.json', auth, stream_handler.delete_stream); etc… auth中间件是这样写的: var auth = express.basicAuth(function(user, pass, callback) { user_handler.authenticate_user(user, pass, callback); }); 在user_handler.authenticate_user()函数内部,执行数据库访问来validation用户。 我想添加一些统计信息并跟踪特定用户执行的每个访问。 我想在authenticate_user()函数内部这样做,因为这是为用户logging访问数据库的地方,我可以使用相同的访问来更新用户logging中的统计信息,但是我需要以某种方式传递对authenticate_user()指定已执行的访问types的额外参数; 要么是路由本身,要么是标识正被访问路由的标记。 而我无法弄清楚如何做到这一点。 “req”在authenticate_user()函数内不可用。 谢谢你,加里

nodejs中的连续任务

我使用nodejs快速为我的webapp,我需要不断运行一些代码,检查是否有一些数据更改,然后更新我的MongoDB。 我怎样才能轻松创build一个与主要任务一起运行的后台进程? 以便后台任务/进程可以通知主要任务。 我已经尝试过了: 在主进程中用“setInterval”函数解决这个问题 – >我没有问题,但认为它不是一个好主意,因为它阻止了节点事件循环 使用subprocess – >我找不到一个很好的教程 – >有没有更简单的方法,也许是一个图书馆,可以帮助我? 一些后台工作者库 – >但是在subprocess上执行重负载任务并完成,但是我需要始终执行这项工作 更新: 最终解决scheme UpdateEvent.js : var events = require('events'); function Updater(time) { this.time = time; this.array = [ {number: 1}, {number: 2} ]; var that; events.EventEmitter.call(this); this.init = function() { that = this; console.log("Contructor"); //Start interval setInterval(that.run,that.time); }; this.run = function() […]

表示没有安装在我的机器上

我将node.js下载到我的Linux fedora core 18机器上。 之后用npm -g install express安装express。 问题是我无法find提供给喜好的Nodeclipse的快递文件。 因此,我使用express的应用程序无法编译表示未find。 我在这里错过了什么?

用mongodb保存node.js的asynchronous性质的多个数据

我有一个ID数组: var ids = ['53asd3','53asd2','53asd5']; 每个id在mongodb中都有相应的文件。 我想通过填充每个对象的数据来生成一个对象,并保存在其他文档中。 喜欢这个: { person: { /* data from some collection populated with first id */}, company : { /* data from some collection populated with first id */}, employee : {/* data from some collection populated with first id */} } 我做了什么 var document = {} models.persons.find({_id:'53asd3'},function(err,data){ if(!err) { […]

从参数加载部分

我最近开始在node.js中开发,到目前为止,我已经掌握了基础知识(路由,authentication,视图等)。 我现在想组织我的模板更好一点,所以我想find一种方法来加载一个基于参数的部分。 在我的应用程序中,我有这个; freeway.get('/login', function(req,res){ res.render('login'); }); 我想要的是能够传递一个参数,指向一个部分,并让我的视图渲染它,像这样; freeway.get('/login', function(req,res){ res.render('index', {reqpage: "login"}); }); 我的索引视图保存我的主要模板,它主要由硬编码的部分组成(尽pipe有些用户login时有一些显示逻辑,如用户特定的元素)。 我想进一步扩展,并dynamic地从我的应用程序传递到索引视图,而不是有几个基本上重复的模板只有轻微变化的内容。 我尝试了以下,但没有成功。 1) <%= reqpage %> 2) <% include reqpage %> 3) <% include <%= reqpage %> %> 在任何情况下,它们要么导致应用程序引发错误(意味着未find部分),要么将path呈现为string。 我甚至尝试过下面这个希望它把它解释为代码来expression一个部分,但唉,没有这样的运气; res.render('index', {reqpage: "<% include login %>"}); 任何想法,或者是Express + EJS根本就没有devise这个想法?

在Node / Express中重用大型翻译文件的最佳方法

我是Node新手,但我想我会立即开始,并将一个PHP应用程序转换为Node / Express。 这是一个使用PO / MO文件的gettext的双语应用程序。 我find了一个名为node-gettext的Node模块。 我宁愿不把PO文件转换成另一种格式,所以看起来这个库是我唯一的select。 所以我现在担心的是,在每个页面呈现之前,我都是这样做的: exports.home_index = function(req, res) { var gettext = require('node-gettext'), gt = new gettext(); var fs = require('fs'); gt.textdomain('de'); var fileContents = fs.readFileSync('./locale/de.mo'); gt.addTextdomain('de', fileContents); res.render( 'home/index.ejs', { gt: gt } ); }; 我也将在课堂上使用翻译,所以现在如何设置翻译,每当我想在另一个地方翻译某些东西的时候,我都要重新加载整个翻译文件。 翻译文件大约是50k,我真的不喜欢每页加载都要这样做文件操作。 在Node / Express中,除了数据库之外,最有效的方法是什么? 通常,用户在第一次之后甚至不会改变他们的语言(如果他们正在从英语改变它)。 编辑: 好吧,我不知道这是否是一个好方法,但它至less可以让我在应用程序的其他部分重新使用翻译文件,而无需在任何需要翻译文本的地方重新加载翻译文件。 在app.js中: var express = require('express'), app […]

nodejs基于路由expressiondynamic静态文件夹

我需要能够有多个静态(公共)文件夹,我可以实现使用以下内容: app.use(express.static(path.join(__dirname, '/routes/mymod1/public'))); app.use(express.static(path.join(__dirname, '/routes/mymod2/public'))); 这合并2个文件夹,使它们看起来像一个,但问题是如果我在这两个文件夹中具有相同的文件名,那么最后一个文件将赢得。 我想要做的是,根据请求的路由dynamic路由静态请求。 例如,对/mymod1/test.html的静态请求将被定向到/mymod1/public/test.html,对mymod2 / test.html的请求将被定向到/mymod2/public/test.html 这可能吗 ??