2012-12-18 93 views
6

我使用的是溫斯頓·庫:https://github.com/flatiron/winston 試圖將數據存儲到與MongoDB的數據庫:https://github.com/indexzero/winston-mongodb無法保存日誌到的MongoDB數據庫的溫斯頓 - 的NodeJS

插入我用的數據:

var MongoDB = require('winston-mongodb').MongoDB; 
var logger = new (winston.Logger)({ 
transports: [ 
    new (winston.transports.Console)(), 
    new (winston.transports.MongoDB)({ host: ip, db: 'caribcultivate', collection: 'log', level: 'info'}) 
], exceptionHandlers: [ new winston.transports.Console() ] 
}); 
logger.log('info', "Running logs "+ d); 
logger.info("Drive: "+ (new Date(d)).toDateString()); 

然而,當我嘗試使用對數據進行查詢:

winston.query(options, function (err, results) { 
    if (err) {console.log(err);} 
    console.log(results); 
}); 

我得到:

{} 

它適用於控制檯正確,我在Mongoose庫的應用程序的其他部分使用數據庫。

+1

我有同樣的問題。我使用MongoHQ的代碼基本上與上面相同。你有沒有幸運解決它? – abarr

+1

不幸的是沒有。考慮到這不是核心要求,並且使用流寫入文件,我最終沒有使用MongoDB。我希望在工作負荷消失時重新審視這個問題。 – kyleED

回答

3

我有類似的問題。事實證明,我的問題是,溫斯頓MongoDB傳輸期望主機選項只是主機名,我用mongodb://作爲前綴。

下對我的作品從mongodb://123456.mongolab.com刪除mongodb://後:

var logger = new(winston.Logger)({ 
    transports : [ 
     new(winston.transports.MongoDB)({ 
      db : 'logs', 
      host : '123456.mongolab.com', 
      username : 'username', 
      password : 'password' 
     }) 
    ] 
}); 
+0

我想嘗試一下。擊中目標+1和一個乾淨的代碼。 –

+1

使用最新的winston-mongodb,您現在可以使用dbUri選項來代替主機,端口,dbname等。 – aarosil

+0

@aarosil,只需使用'db'參數來添加所有內容即可。 'db:'mongodb:// myuser:[email protected]:54545/MyLogDB' – securecurve

相關問題