在node.js中,如何使用child_process.exec这样一切都可以asynchronous发生?

我有一个build立在node.js上的服务器。 以下是请求处理函数之一: var exec = require("child_process").exec function doIt(response) { //some trivial and fast code – can be ignored exec( "sleep 10", //run OS' sleep command, sleep for 10 seconds //sleeping(10), //commented out. run a local function, defined below. function(error, stdout, stderr) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write(stdout); response.end(); }); //some trivial and fast code – can […]

用Node.JS查询MySQL并在网页中显示结果

我的目标是用Node.JS查询MySQL以获得更好的交互性。 我的查询是一个简单的SELECT和JOIN 。 我设法构build了一个在控制台中显示结果的脚本,但在网页中显示时,我仍然陷入困境。 这是我的代码: var mysql = require('mysql'); var mySqlClient = mysql.createConnection({ host : 'server', user : 'login', password: 'pwd', database: 'db' }); var selectQuery = 'SELECT fields FROM table t1\ INNER JOIN table t2\ ON t1.field = t2.field'; mySqlClient.query( selectQuery, function select(error, results, fields) { if(error) { console.log(error); mySqlClient.end(); return; } if(results.length > […]

从chromedriver启动时修改标志

我使用webdriver( http://webdriver.io/ ),独立selenium,摩卡来写我的testing用例。 testing案例是特定于铬,所以我使用的是chromedriver。 在启动时,我想要禁用“touch-events”和“touch-optimized-ui”标志,否则我的testing用例将会失败。 每当chromedriver启动浏览器,它将从默认选项开始。 有谁能为我提供解决scheme吗? 什么可以添加到下面的代码来禁用这些标志? 或者也许有其他解决scheme? 示例代码: var webdriverjs = require('./webdriverjs/index'), assert = require('assert'); describe('my webdriverjs tests', function(){ this.timeout(99999999); var client = {}; before(function(done){ client = webdriverjs.remote({ desiredCapabilities: {browserName: 'chrome'} }); client.init(done); }); it('sample test',function(done) { client .url('http://localhost:3030/subset/index') .call(done) }); after(function(done) { client.end(done); }); });

下划线组sorting

我有一个关于函数式编程的问题。 我使用underscore.js库。 让我们考虑一些用例。 我有一些重复标签的数组,我需要计算每个标签在数组中的出现次数,并根据出现次数进行sorting。 为了计算,我可以使用countBy多less个标签 _.countBy([1, 2, 3, 4, 5], function(num) { return num % 2 == 0 ? 'even': 'odd'; }); => {odd: 3, even: 2} 但在这里,因为我有一个散列,这对订单没有意义,所以没有sorting。 所以在这里,我需要将散列转换为数组然后对其进行sorting并将其转换为散列。 我很确定有这样一个优雅的方式,但我没有意识到这一点。 我将不胜感激任何帮助。

使用node-webkit进行Demeteorizer

我正在尝试使用meteor制作桌面应用程序。 我可以使用Demeteorizer将其转换为标准的node.js应用程序,然后使用ndoe-webkit将其变成桌面应用程序? 我的问题是,如何mongodb数据库仍然工作? 如果这不是一个有效的select,有没有其他的方法来做到这一点?

如何在Connect中间件里面对mongoDB进行asynchronous调用?

比方说,我有以下的Express / Connect中间件: return function(req, res, next) { mongoose.connect(url, options); var Config = mongoose.model('Config', mongoose.Schema({ field1: Boolean, field2: [] })); Config.findOne({}, function (err, doc) { if(!err) { if(someCondition) // some logic: send response and interrupt middleware chain res.end('Some response'); else next(); } } }; 问题是数据库调用是asynchronous的。 所以中间件函数在执行任何逻辑之前退出。 任务很简单:从mongoDB读取configuration,如果某个字段值=“某些”发送响应,否则 – 继续中间件链。 所以,我现在有两个问题 : 有没有办法在中间件内部进行asynchronous调用? 如果没有,是否有任何解决方法? (AFAIK,没有办法同步执行数据库调用)

Node.js + Express.js +端口443上的Socket.io(HTTPS TLS / SSL)

我有一个Node.js,Express.js和Socket.io应用程序,使用除443之外的任何端口都可以正常运行。服务器仅用于通过HTTPS端口443运行,同样,websocket也应该被encryption。 CODE THAT WORKS var fs = require('fs'); var https = require('https'); var express = require('express'); var socket = require('socket.io'); var sslOptions = { key: fs.readFileSync(__dirname + '/../ssl/server.key, cert: fs.readFileSync(__dirname + '/../ssl/server.pem, ciphers: 'ECDHE-RSA-AES256-SHA:AES256-SHA:RC4-SHA:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM', honorCipherOrder: true }; var app = express(); var server = https.createServer(sslOptions, app); var io = socket.listen(server, { "log level" : 3, […]

node.js将二进制string转换为数字

编写一个node.js应用程序,它从一个套接字接收4字节“\ x00 \ x00 \ x00 \ x13”的二进制string,我需要使用大端顺序将其转换为整数(在我们的例子中为19)。 在其他脚本语言中,比如perl,我们可以解压。 解压(“N”) 在node.js中,不知道该怎么做。

Eclipse创build空的node.js express项目

我开始用express来学习node.js。 本教程说为Eclipse IDE安装nodeclipse插件,然后创build一个新的Express项目。 根据教程,你应该有一个新的项目,在基本结构内部开始。 当我创build新的快递项目它是空的,没有任何文件。 我按照教程的程序,我无法弄清楚哪里错了

如何安装一个Sails.js应用程序作为快递中间件

我想在一个更大的基于快件的应用程序中使用Sails。 我和你一起工作的大多数node.js MVC框架都可以作为快递中间件装载。 Sails可能吗? 我想做一些事情: var express = require('express'), app = express(); var mySailsApp = require('./mysailsapp'); app.use(mySailsApp);