Tag: 表示

基于第一方快速节点API的授权策略

我正在处理我的第一个API的devise,并且在授权概念上有些挣扎 – 我希望有些人能给我一些build议! 我正在build设的是: 最终将被第三方应用程序和移动应用程序访问的API。 基于networking的“客户端”(第一方单页应用程序)将使用API​​。 (这个第一方应用程序应该是API的一部分,还是完全独立的节点应用程序?) 我计划使用的技术: 节点 performance 护照 Mongodb与mongoose 我不会expression或护照,他们只是看起来像是最好的select,并有良好的logging – 我不希望一个潜在的解决scheme,因为替代依赖关系被解雇。 和Mongoose一样,我更喜欢Monk(甚至只是Mongojs)的外观,但是每个Tut似乎都使用mongoose,所以对于初学者来说,它似乎是最安全的select。 对用户进行身份validation非常简单(我已经通过了“梦幻般的啤酒储物柜”教程 ),我正在努力的是持续的授权。 当然,我不希望用户input一个用户名和密码,他们的每一个请求 – 这个信息应该存储在本地,并与每个请求发送? (如果是这样,怎么办?我不能find有关处理API的任何信息)或者我应该使用某种types的令牌吗? 我在“Digest”授权(包括Beer Locker教程后续)上所做的less量阅读,看起来像是有安全问题,至less在Passport的实施中(这个我并不完全了解,但似乎涉及到哈希密码,哪个护照不符合标准,只有MD5支持,即使它被添加?)。 我已经构build了一个可以使用“Basic”(直接通过Postman)进行授权的工作API,因此我拥有了基础 – 授权工作,我只需要工具就可以将它们添加到下一步! 我一直试图让我的头脑在这一两天,但我担心我陷入了一个更传统的本地Web应用程序工作stream程 – 整个API的东西都扔了一些。 任何帮助都非常感谢,即使它只是指向我一个适当的教程 – 上述要求必须相当普遍!

如何dynamic插入标签在使用JavaScript的玉文件输出?

我正在用一个小的node.js表示应用程序与用户login。 如果用户A连接,页面应该显示一个button。 如果用户B连接,该button不应该在那里。 我尝试了以下 #{hideOrNot} 其中hideOrNot是我的js应用程序中具有该值的variables 'button(type="submit")' 如果A连接,但只是“如果B连接。 我猜这不是在翡翠工作方式,因为它打印的是button标签的文本,而不是实际的button。 我怎样才能做到这一点?

用express.js打破程序stream程

我想知道怎样才能打破程序的stream程并redirect到某个path。 类似于标题redirect,但使用路由名称而不是完整的URL。 这在PHP框架中很常见,function也很强大,而且我还没有find使用express.js的方法。 想象一下这个场景: function getUser() { //… //getting user.. //Here I would like to break the flow of the program if (error) { res.redirect('add'); } //If there was no error we keep the normal flow //… } router.get('/add', function (req, res, next) { var user = getUser(); var date = //whatever var type = […]

渲染来自玉节点的数据

我有问题渲染数据从玉节点发送。 这就是我的路线 router.get('/', function(req, res) { res.render('about', {aaaa: 'do not touch my data'}); }); 在玉里我正在做这样的事情(读其他问题): extends layout block content p #{aaaa} 似乎它解决了其他人的问题,但不是我的。 任何想法我做错了什么?

在terminal错误中启动Node / Express项目

我昨天晚上在做一个MEAN堆栈教程, https://thinkster.io/angulartutorial/mean-stack-tutorial/ ,一切工作正常。 然后今天上午当我尝试再次启动它时,我一直得到一个npm错误。 它说无法连接到本地主机:27017,但我昨晚连接到端口:3000,并且/ bin / www代码设置为3000。 我想这个错误可能是在package.json文件中:“start”:“node ./bin/www”,但我不确定,需要帮助。 谢谢。 Darraghs-MacBook-Pro:flapper-news dkdesign$ npm start > flapper-news@0.0.0 start /Users/dkdesign/flapper-news > node ./bin/www events.js:72 throw er; // Unhandled 'error' event ^ Error: failed to connect to [localhost:27017] at null.<anonymous> (/Users/dkdesign/flapper-news/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:549:74) at emit (events.js:106:17) at null.<anonymous> (/Users/dkdesign/flapper-news/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:150:15) at emit (events.js:98:17) at Socket.<anonymous> (/Users/dkdesign/flapper-news/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:533:10) at Socket.emit (events.js:95:17) at […]

如何构build一个消息总线与Node.js和API分布在几个听众?

这是我想要发生的事情: 我的用户会打到一个端点,比如/api/findFile/app.js 。 express正在监听这个调用(标准的RESTtypes的东西),并会联系几个工作人员(可以是任意数量)要求他们执行工作,具体查找文件。 当第一个这样做的时候,它应该回应express的function,以便将结果发回给用户。 我想像某种消息总线/ AMQP设置将需要。 我认为快递function可以向工作人员publish请求,每个人都subscribe这个事件: bus.publish('findFile', {fileName: 'app.js'}}; 沿着这些线的东西。 工人有: bus.subscribe('findFile', function(event) {…. 每个工人将检查它是否有硬盘上的文件。 该文件可以在MULTIPLE工作盘上。 所以当第一个find它的时候,我想以某种方式中止别人回来expression。 为了回到expression,我想我们会做一个反向的pub/sub订阅,这次是明确地听取回应? 任何想法如何正确地devise这个? 特别是与比赛条件。

使用Redis进行用户查找表

我正在学习Redis,我正在使用一个简单的users表。 我正在通过node_redis与Redis进行node_redis 。 我存储每个新用户,如: client = redis.createClient(); client.incr('user_count', function (err, reply) { var new_user_id = reply; client.lpush('user_ids', new_user_id); client.hset('user:' + new_user_id, 'username', req.param('username'), redis.print); client.quit(); res.redirect('/'); }); 所以在这一点上,我希望我的数据库看起来像这样: user_ids 1 2 和 user:1 username 'Guy One' user:2 username 'Guy Two' 这工作正常。 但是我现在坚持的是生成完整的用户表。 我迭代user_ids ,并为每一个,拉出相应的user哈希条目。 除了看起来非常低效(每个用户密钥的单独查询)之外,这种方法也是有问题的,因为node_redis getter调用是asynchronous执行的。 所以每个getter都必须在成功callback中调用下一个getter,等等。一个非常长的嵌套callbackgetter的链。 这是我最初尝试的: var usernamesList = new Array(); client.lrange('user_ids', 0, […]

从node.js / express传递数组到jade模板

不知道我在做什么错在这里.. questions.js questions = []; questions.AA = 'First' questions.BB = 'Second' questions.CC = 'Third' res.render('questions', { title: questions[CC], questions: questions }); questions.jade extends layout block content h1= title p #{questions.CC} each question in questions p= question 渲染 <body> <h1>Third</h1> <p>Third</p> </body> 所以 each question in questions p= question 似乎没有像我所期望的那样工作。 我错过了什么?

使用nano和couchdb节点时ECONNREFUSED

直到今天,我还在为我的应用程序使用nodejs + nano + couchdb。 出于某种原因,当我尝试运行我的应用程序时,突然间我收到了ECONNREFUSED。 如果我尝试使用Web浏览器或使用不同的应用程序(Java应用程序)查询数据库,它工作正常。 我不确定为什么只是在这种情况下停止工作。 我一直在研究过去两天,找不到任何帮助。 我相信这可能与许多开放的联系有关,但是这有点超出我的知识领域。 任何人都可以提供任何有关debugging这个问题或任何方向,我可以去的见解? 我应该提到这个couchdb住在iriscouch上 非常感谢。

使用connect-mongo时处理数据库错误

我有一个相当标准的连接mongo设置 在此之前,mongoose被初始化/连接 app.use(express.session({ secret: "sfdgsdgsdfg", store: new MongoSessionStore({db: mongoose.connection.db}) })); 这工作正常。 但是 – 假设我的mongodb连接突然死掉(在下面的例子中本地停止mongod) – 下一次我尝试点击一个路由时,我的快速应用崩溃了 – 错误:无法连接到[localhost:27017]。 (/Users/alex/Projects/MyProject/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:540:74)at emit(events.js:106:17)at null。 (/Users/alex/Projects/MyProject/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15)在发射(events.js:98:17)在Socket。 (/Users/alex/Projects/MyProject/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:478:10)在Socket.mit(events.js:95:17)在net.js: 440:14在process._tickCallback(node.js:419:13) 有没有办法来处理这个错误,(例如)redirect到/错误路线? (很显然,不需要会话!) 编辑 所以现在,我正在创build一个单独的mongoose连接。 然后我使用on('error'来听错误 …这是我卡住的地方 – 进程仍然死亡,因为重新抛出的错误不会传递到明确的error handling程序… var sessionDbConnection = mongoose.createConnection(config.sessionDb); sessionDbConnection.on('error', function(err) { console.log('oops'); throw err; //instead of re-throwing the error, i think i need to pass it […]