2016-09-13 79 views
10

我想嘗試node orm2,使用sqlite。我嘗試了示例代碼,並將mysql更改爲sqlite。它看起來像這樣:節點orm2:不調用orm.connect回調

var orm = require("orm"); 

orm.connect('sqlite://D:/orm_test/database.db', function (err, db) { 

    // ... 

}); 

我沒有得到任何錯誤或警告。沒有任何反應。回調沒有被調用。

它不工作,即使我創建database.db

+0

我懷疑你最好使用對象模式來定義你的連接字符串[見](https://github.com/dresende/node-orm2/blob/master/lib/ORM.js#L74)。如果我運行'url.parse('sqlite:// D:\\ orm_test \\ database.db',true);',它有點難看。奇怪的是你說cb沒有被調用。這應該被報告爲一個錯誤。 –

+0

你甚至安裝了'npm sqlite'嗎? – Shaharyar

+0

當然我沒有 –

回答

1

根據文檔當連接成功完成(或失敗)的回調只是叫...... 所以,如果你的路徑不正確(對任何原因,你的連接不是明確的不成功),也許沒有回調?

你能避免回調,如果你直接偵聽connect事件是這樣的:

var orm = require('orm'); 
var db = orm.connect('sqlite://D:/orm_test/database.db'); 
db.on('connect', function(err) { 
    if (err) return console.error('Connection error: ' + err); 
    // doSomething()... 
}); 

連接URL是這樣的:

driver://username:[email protected]/database?option=value 

您可以使用調試選項來打印查詢到控制檯,也許會有更多的信息?

編輯:
嗯,我只是想使用它,這樣做:

// REQUIRES 
var express = require('express'); 
var app = express(); 
var orm = require("orm"); 
var sqlite3 = require('sqlite3'); 

// SERVER CONFIGURATION 
var port = 5050; 

// APP CONFIGURATION 
app.use(express.static('public')); 
app.use('/static', express.static(__dirname + '/public')); 
app.set('views', __dirname + '/views'); 

// ROUTES 
app.get('/', function(req, res){ 
    orm.connect('sqlite://C:/Users/Me/Documents/Projects/test/database.db', function(err, db){ 
    console.log('connected to this db : ' + JSON.stringify(db)); 
    }); 
}); 

app.listen(port, function(){ 
    console.info('Server successfully started, listening on port ' + port); 
}); 

和它的作品... JSON.stringify說明了什麼是數據庫對象在控制檯中的內容。 你的代碼看起來像這樣嗎?

+0

還是沒有什麼。 'on('connect',...''回調從未被調用 –

+0

調試選項= true是否打印某些內容? – Aethyn