Tag: node.js

以Layman的术语理解asynchronous代码

我理解asynchronous的基本原理:事情不会按顺序执行。 据我所知,有一些非常强大的东西。 但是对于我的生活,我无法将自己的头围绕在代码上。 让我们来看看我写的asynchronousNode.JS代码…但是并没有真正得到。 function newuser(response, postData) { console.log("Request handler 'newuser' was called."); var body = '<html>' + '<head>' + '<meta http-equiv="Content-Type" content="text/html; ' + 'charset=UTF-8" />' + '</head>' + '<body>' + '<form action=" /thanks" method="post">' + '<h1> First Name </h1>' + '<textarea name="text" rows="1" cols="20"></textarea>' + '<h1> Last Name </h1>' + '<textarea name="text" rows="1" […]

MongoDB,从数组中删除对象

文档: { _id: 5150a1199fac0e6910000002, name: 'some name, items: [{ id: 23, name: 'item name 23' },{ id: 24, name: 'item name 24' }] } 有没有办法从数组中拉出特定的对象? IE浏览器如何从items数组中拉出ID为23的整个项目对象。 我努力了: db.mycollection.update({'_id': ObjectId("5150a1199fac0e6910000002")}, {$pull: {id: 23}}); 不过,我很确定,我没有正确使用“拉”。 从我所了解的拉将从一个arrays,而不是一个对象拉场。 任何想法如何将整个对象拉出arrays。 作为一个奖金,我试图在mongoose/ nodejs这样做,以及不知道这种types的东西在mongooseAPI,但我找不到它。

最简单的方法来等待一些asynchronous任务完成,在Javascript中?

我想删除一些MongoDB集合,但这是一个asynchronous任务。 代码将是: var mongoose = require('mongoose'); mongoose.connect('mongo://localhost/xxx'); var conn = mongoose.connection; ['aaa','bbb','ccc'].forEach(function(name){ conn.collection(name).drop(function(err) { console.log('dropped'); }); }); console.log('all dropped'); 控制台显示: all dropped dropped dropped dropped 什么是最简单的方法来确保all dropped将被打印所有集合已被删除后? 任何第三方都可以用来简化代码。

如何追加到Node中的文件?

我想追加一个string到日志文件。 不过writeFile会在每次写入string之前擦除内容。 fs.writeFile('log.txt', 'Hello Node', function (err) { if (err) throw err; console.log('It\'s saved!'); }); // => message.txt erased, contains only 'Hello Node' 任何想法如何做到这一点的简单方法? 丹尼尔

node.js需要文件夹中的所有文件?

我如何要求node.js文件夹中的所有文件? 需要这样的东西: files.forEach(function (v,k){ // require routes require('./routes/'+v); }};

在express.js上启用HTTPS

我试图让HTTPS的express.js工作节点,我无法弄清楚。 这是我的app.js代码。 var express = require('express'); var fs = require('fs'); var privateKey = fs.readFileSync('sslcert/server.key'); var certificate = fs.readFileSync('sslcert/server.crt'); var credentials = {key: privateKey, cert: certificate}; var app = express.createServer(credentials); app.get('/', function(req,res) { res.send('hello'); }); app.listen(8000); 当我运行它,似乎只响应HTTP请求。 我写了简单的基于vanilla node.js的HTTPS应用程序: var fs = require("fs"), http = require("https"); var privateKey = fs.readFileSync('sslcert/server.key').toString(); var certificate = fs.readFileSync('sslcert/server.crt').toString(); var credentials […]

__dirname和./在node.js中有什么区别?

当在Node.js中编程并引用与当前目录相关的文件时,是否有理由使用__dirnamevariables而不是常规的./ ? 我一直在使用./到目前为止在我的代码,只是发现__dirname的存在,本质上想知道是否是聪明的转换我的./'s,如果是这样,为什么这将是一个聪明的理念。

尝试安装任何模块时,“消息无法从registry中获取”

我不能从npm安装任何节点模块。 npm install socket.io 上面的命令导致下面的输出,它不能够安装socket.io npm http GET https://registry.npmjs.org/socket.io npm ERR! Error: failed to fetch from registry: socket.io npm ERR! at /opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:139:12 npm ERR! at cb (/opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:32:9) npm ERR! at Request._callback (/opt/node0610/lib/node_modules/npm/lib/utils/npm-registry-client/request.js:137:18) npm ERR! at Request.callback (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:109:22) npm ERR! at Request.<anonymous> (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:198:58) npm ERR! at Request.emit (events.js:88:20) npm ERR! at ClientRequest.<anonymous> (/opt/node0610/lib/node_modules/npm/node_modules/request/main.js:195:10) npm ERR! at […]

如何在node.js中执行Base64编码?

node.js是否有内build的base64编码呢? 我问这个问题的原因是crypto final()只能输出hex,二进制或ASCII数据。 例如: var cipher = crypto.createCipheriv('des-ede3-cbc', encryption_key, iv); var ciph = cipher.update(plaintext, 'utf8', 'hex'); ciph += cipher.final('hex'); var decipher = crypto.createDecipheriv('des-ede3-cbc', encryption_key, iv); var txt = decipher.update(ciph, 'hex', 'utf8'); txt += decipher.final('utf8'); 根据文档, update()可以输出base64编码的数据。 但是, final()不支持base64。 我试了,它会打破。 如果我这样做: var ciph = cipher.update(plaintext, 'utf8', 'base64'); ciph += cipher.final('hex'); 那我应该用什么来解密? hex或base64? 因此,我正在寻找一个函数来base64编码我的encryptionhex输出。 谢谢。

Node.js / Express.js – app.router如何工作?

在我问及app.router之前,我想我应该至less解释一下我在使用中间件时会发生什么。 要使用中间件,要使用的函数是app.use() 。 当中间件被执行时,它将使用next()调用下一个中间件,或者使其不再调用中间件。 这意味着我放置中间件的顺序是很重要的,因为有些中间件依赖于其他中间件,有些中间件甚至可能不会被调用。 今天我正在处理我的应用程序,并让我的服务器在后台运行。 我想做一些改变,刷新我的网页,立即看到变化。 具体来说,我正在改变我的布局。 我无法得到它的工作,所以我search堆栈溢出的答案,并发现这个问题 。 它说确保express.static()在require('stylus')之下。 但是当我看着OP的代码的时候,我看到他在中间件调用的最后有他的app.router调用,我试图找出原因。 当我制作了我的Express.js应用程序(版本3.0.0rc4)时,我使用了命令express app –sessions –css stylus并在我的app.js文件中使用我的app.router安装了express.static()并require('stylus')调用。 所以看来,如果它已经以这种方式设置,那么它应该保持这种方式。 重新安排我的代码后,我可以看到我的触笔更改,它看起来像这样: app.configure(function(){ //app.set() calls //app.use() calls //… app.use(app.router); app.use(require('stylus').middleware(__dirname + '/public')); app.use(express.static(__dirname + '/public', {maxAge: 31557600000})); }); app.get('/', routes.index); app.get('/test', function(req, res){ res.send('Test'); }); 所以我决定,第一步是找出为什么在我的代码中甚至有app.router是非常重要的。 所以我评论说,开始我的应用程序,并导航到/ 。 它显示我的索引页面很好。 嗯,也许它工作,因为我从我的路线文件(routes.index)导出路由。 所以接下来我导航到/test并在屏幕上显示testing。 哈哈,好的,我不知道app.router是做什么的。 无论是否包含在我的代码中,我的路由都很好。 所以我肯定错过了一些东西。 所以这里是我的问题: 有人可以解释一下app.router作用,它的重要性,以及我应该把它放在我的中间件调用中? 如果我对express.static()有一个简单的解释,那也是很好的。 据我所知, […]