如何从module.exports声明的另一个函数中调用函数? 这里有一些简化的代码。 在我的app.js中,我执行以下操作: var bla = require('./bla.js'); console.log(bla.bar()); 而bla.js里面是 module.exports = { foo: function (req, res, next) { return ('foo'); }, bar: function(req, res, next) { this.foo(); } } 我试图从functionbar访问函数foo ,我得到: TypeError: Object # has no method 'foo' 如果我改变this.foo()只是foo()我得到: ReferenceError: foo is not defined
我开始用node.js,express和mongodb来规划一个REST API。 该API提供了一个网站(公共和私人领域)的数据,也许以后是一个移动应用程序。 前端将与AngularJS一起开发。 有几天我读了很多关于保护REST API的内容,但是我没有得到最终的解决scheme。 据我所知是使用HTTPS来提供基本的安全性。 但是我怎么能保护这个用例中的API: 只有网站/应用程序的访问者/用户才能获取网站/应用程序的公共区域的数据 只有经过身份validation和授权的用户才能获取私有区域的数据(并且只有用户授予权限的数据) 目前我想只允许有活动会话的用户使用API。 为了授权用户,我将使用护照并获得许可,我需要为自己实施一些东西。 全部位于HTTPS的顶部。 有人可以提供一些最佳实践或经验吗? 我的“架构”是否缺乏?
我是Node.js中的学习者。 什么是Express.js ? Node.js的目的是什么? 为什么我们实际上需要Express.js? 如何使用Node.js对我们有用? 什么是Redis ? 它是否与Express.js一起?
我使用Express 4.0,我意识到身体parsing器已经被取出了快速核心,我使用推荐的替代品,但是我越来越 body-parser deprecated bodyParser: use individual json/urlencoded middlewares server.js:15:12 body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing node_modules/body-parser/index.js:74:29 我在哪里可以find这个假设的中间件? 或者我不应该得到这个错误? var express = require('express'); var server = express(); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var passport = require('./config/passport'); var routes = require('./routes'); mongoose.connect('mongodb://localhost/myapp', function(err) { if(err) throw err; }); server.set('view […]
我知道如何得到像这样的查询params: app.get('/sample/:id', routes.sample); 在这种情况下,我可以使用req.params.id获取参数(例如2 in /sample/2 )。 但是,对于像/sample/2?color=red这样的url,我怎样才能访问variables的color ? 我试过req.params.color但没有奏效。
我有一个像这样的路线: app.all('/path/:namedParam/*splat?',function(req,res,next){ if(!req.params.length){ // do something when there is no splat } else { // do something with splat } }); 然而,这是行不通的 – 如果我调用path/foo/bar它击中的路线,但如果我呼吁path/foo ,它不。 有可能有一个可选的图示参数,或者我必须使用正则expression式来检测这个? 编辑 : 要更清楚,这里是我试图达到的要求: 第一个和第二个参数是必需的 第一个参数是静态的,第二个参数是一个命名参数。 任何数量的可选的附加参数可以被追加,并仍然击中路线。
我可以find任何与mongoose结果折页的东西说这样做: users.find({}, function(err, docs){ res.render('profile/profile', { users: docs }); }); 我怎么能返回查询的结果,更像这样? var a_users = users.find({}); //non-working example 这样我可以得到多个结果发布在网页上? 喜欢: /* non working example */ var a_users = users.find({}); var a_articles = articles.find({}); res.render('profile/profile', { users: a_users , articles: a_articles }); 可以这样做吗?
这是一个例子: // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public')); }); (等等。) app.get('/memo', function(req, res) { console.log("index"); Memo.find({}, function(err, data) { if(err) return next(err); res.render('index', { memos: data }); }); }); 这是另一个: app.get('/memo/list', function(req, res, next) { console.log("get memos"); Memo.find({}, function(err, data) { if(err) return next(err); res.json(data); }); […]
我正在为item.comments列表添加评论。 在输出响应之前,我需要获取comment.created_by用户数据。 我应该怎么做? Item.findById(req.param('itemid'), function(err, item){ var comment = item.comments.create({ body: req.body.body , created_by: logged_in_user }); item.comments.push(comment); item.save(function(err, item){ res.json({ status: 'success', message: "You have commented on this item", //how do i populate comment.created_by here??? comment: item.comments.id(comment._id) }); }); //end item.save }); //end item.find 我需要在我的res.json输出中填充comment.created_by字段: comment: item.comments.id(comment._id) comment.created_by是我的mongoose CommentSchema中的用户参考。 它目前只给我一个用户ID,我需要填充所有的用户数据,除了密码和盐字段。 这是人们所问的模式: var CommentSchema = new […]
我是新来expression和node.js,我无法弄清楚app.use和app.get之间的区别。 似乎你可以使用他们两个来发送信息。 例如: app.use('/',function(req, res,next) { res.send('Hello'); next(); }); 似乎是这样的: app.get('/', function (req,res) { res.send('Hello'); });