2012-07-08 71 views
2

我試圖從node.js啓動couchdb,如果它尚未啓動。類似於下面的代碼工作像pwd但不是基本的命令爲couchdb通過exec或spawn從node.js啓動couchdb

var sys = require('util') 
var exec = require('child_process').exec; 
var child; 

// executes `pwd` 
child = exec("pwd", function (error, stdout, stderr) { 
    sys.print('stdout: ' + stdout); 
    sys.print('stderr: ' + stderr); 
    if (error !== null) { 
    console.log('exec error: ' + error); 
    } 
}); 

我一直在使用「couchdb」 &「/usr/local/bin/couchdb」作爲參數傳遞給高管受審。

+1

共享資格對任何人都沒有價值 - 我不知道笑臉是什麼。 – 2012-07-08 22:36:53

+0

+1 @Cirrostratus,-1 dscape。 – 2012-07-09 01:10:41

回答

2

我已經工作的例子,現在使用的CoffeeScript:

childproc = require "child_process"  
couchdb = childproc.spawn "couchdb" 
couchdb.stdout.setEncoding "utf8" 
buffer = "" 

couchdb.stdout.on "data", (data) -> 
    lines = (buffer + data).split(/\r?\n/) 
    buffer = lines.pop() 
    lines.forEach (line, index) -> 
    console.log line 

couchdb.stdout.on "end", -> 
    if buffer.length > 0 
     console.log buffer 
     buffer = "" 
    console.log 'process ended' 

See my gist for a fuller example in CS, Iced CS & JS

編輯 這裏是JavaScript中的輸出中:你認爲這是一個壞主意不

var buffer, childproc, couchdb; 

childproc = require("child_process"); 

couchdb = childproc.spawn("couchdb"); 

couchdb.stdout.setEncoding("utf8"); 

buffer = ""; 

couchdb.stdout.on("data", function(data) { 
    var lines; 
    lines = (buffer + data).split(/\r?\n/); 
    buffer = lines.pop(); 
    return lines.forEach(function(line, index) { 
    return console.log(line); 
    }); 
}); 

couchdb.stdout.on("end", function() { 
    if (buffer.length > 0) { 
    console.log(buffer); 
    buffer = ""; 
    } 
return console.log('process ended'); 
}); 
+0

任何你可以發佈JS輸出的機會 - 相當於? – 2012-07-09 01:12:13

+1

@ClintNash我很高興,但已經注意到Marcus已經足夠爲我們做這件事了。我可以爲你提供一個更完整的例子,在這裏我測試沙發是否在運行,如果有必要的話打開它,然後測試一個數據庫是否存在,如果不存在則創建。 https://gist.github.com/733e4de4b328f4fd88dc – 2012-07-09 10:19:57

+0

+1是的,請。也許只是jsFiddle它?像這樣的參賽作品可能對node.js上的交叉訓練師以及那些couchdb noobs〜like-me很有價值。 #增值。 Yourock @Cirrostratus,謝謝。 – 2012-07-10 01:30:32