我想在节点中打开一个页面并处理我的应用程序中的内容。 像这样的东西似乎运作良好: var opts = {host: host, path:pathname, port: 80}; http.get(opts, function(res) { var page = ''; res.on('data', function (chunk) { page += chunk; }); res.on('end', function() { // process page }); 但是,这不起作用,如果页面返回301/302redirect。 如果有多个redirect,我该如何以可重用的方式来做到这一点? 在http的顶部是否有一个包装模块,可以更轻松地处理来自节点应用程序的http响应处理?
我使用Connect编写了一个小型的node.js应用程序,它提供了一个网页,然后定期发送更新。 它也接受和logging用户观察到一个磁盘文件。 只要我在本地主机上,它就能正常工作,但是我不能在同一个内部网上看到其他的计算机。 我正在使用端口3000,但更改为端口8080或80没有帮助。 这是我用来build立连接的代码: var io = require('socket.io'), connect = require('connect'); var app = connect().use(connect.static('public')).listen(3000); var chat_room = io.listen(app); 如上所述,我已经尝试将端口号更改为8080或80,并没有看到任何区别,所以我不认为这是一个防火墙问题(但我可能是错的)。 我也想过,在阅读了类似的HTTP问题之后,我们在listen()中添加了0.0.0.0,但是listen()并没有使用IP掩码参数。
我需要运行两个需要从同一个stream中读取数据的命令。 在将一个stream传输到另一个stream之后,缓冲区被清空,所以我无法再从该stream读取数据,所以这不起作用: var spawn = require('child_process').spawn; var fs = require('fs'); var request = require('request'); var inputStream = request('http://placehold.it/640×360'); var identify = spawn('identify',['-']); inputStream.pipe(identify.stdin); var chunks = []; identify.stdout.on('data',function(chunk) { chunks.push(chunk); }); identify.stdout.on('end',function() { var size = getSize(Buffer.concat(chunks)); //width var convert = spawn('convert',['-','-scale',size * 0.5,'png:-']); inputStream.pipe(convert.stdin); convert.stdout.pipe(fs.createWriteStream('half.png')); }); function getSize(buffer){ return parseInt(buffer.toString().split(' ')[2].split('x')[0]); } 要求抱怨这个 Error: […]
我来自一个SQL背景,所以编写查询在SQL中,我join表是很简单,但我想我错过了在mongoose/ mongodb 基本上我知道Subscriber_ID(映射到User Collection中的文档) 我想拉的项目组,所有的用户所属的项目,所以如果我要写在pseduo SQL这将是像 Select ProjectGroup.title, Project.Title FROM ProjectGroup, Project, User WHERE User.id = req.body.subscriber_id AND Project.subscriber_id = User.id AND ProjectGroup.project_id = Project.id 在mongoose / mongodb中必须有办法做类似的连接,因为这个types映射到一个模式对吗? 我的模式….. 项目组模式 var ProjectGroupSchema = new Schema({ title : String , projects : [ { type: Schema.Types.ObjectId, ref: 'Project' } ] }); 项目模式 var ProjectSchema = new […]
如果我将文件的内容作为内存中的string,而不将它写出到磁盘,我将如何要求()一个文件? 这是一个例子: // Load the file as a string var strFileContents = fs.readFileSync( "./myUnalteredModule.js", 'utf8' ); // Do some stuff to the files contents strFileContents[532] = '6'; // Load it as a node module (how would I do this?) var loadedModule = require( doMagic(strFileContents) );
我很好奇在使用它之后是否有任何好的方法来卸载模块。 我有一些需要使用模块的例子,但是很less使用(比如说pipe理工具),但是我不愿意使用它们,因为之后他们可能会浪费内存,这可能会更好在别处使用。 有没有什么办法可以卸载它们,要么是明确的,要么是在系统没有使用一段时间的情况下让系统去卸载它们?
我用正则expression式不太好,所以我想确保我正确地做到了这一点。 比方说,我有两个非常相似的路线, /discussion/:slug/和/page/:slug/ 。 我想创build一个匹配这两个页面的路线。 app.get('/[discussion|page]/:slug', function(req, res, next) { …enter code here… }) 这是正确的方法吗? 现在我只是创build两个单独的路线。 someFunction = function(req, res, next) {..} app.get('/discussion/:slug', someFunction) app.get('/page/:slug', someFunction)
我刚刚开始与node.js。 我已经做了一些Ajax的东西,但没有太复杂,所以callback仍然是我的头。 我看着asynchronous,但我需要的是顺序运行一些function。 我基本上有一些东西,从一个API拉一些JSON,创build一个新的,然后做了什么。 显然,我不能只运行它,因为它一次运行一切,并有一个空的JSON。 大多数进程必须按顺序运行,但是如果从API中提取JSON,则可以在等待的情况下提取其他JSON,这很好。 把callback放在循环中时我感到困惑。 我该如何处理索引? 我想我已经看到一些在循环内部使用callback的地方作为一种recursion函数,根本不使用for循环。 简单的例子会帮助很多。
我现在有这个代码设置了缺口和空间: io.sockets.on('connection', function(client){ var Room = ""; client.on("setNickAndRoom", function(nick, fn){ client.join(nick.room); Room = nick.room; client.broadcast.to(Room).emit('count', "Connected:" + " " + count); fn({msg :"Connected:" + " " + count}); }); 我想知道如何让多less人连接到特定的聊天室…比如Room.length 客户端 : function Chat(){ this.socket = null; this.Nickname = ""; this.Room = ""; var synched = $('#syncUp'); this.Connect = function(nick, room){ socket = io.connect('http://vybeing.com:8080'); Nickname […]
是否有可能在node.js中执行外部程序? 是否有一个相当于Python的os.system()或任何库添加此function?