1
我試圖使用db-mysql庫從node.js連接到MySQL數據庫。一切工作都很好用示例代碼,但現在我試圖寫一個簡單的ORM。在node.js中訪問MySQL數據庫 - 內部斷言失敗
這是我的代碼:
require.paths.unshift('/usr/lib/node_modules'); // default require.paths doesn't include this
function Model() {
this.database = null;
}
Model.prototype.getDB = function(callback) {
if (this.database != null)
callback(this.database);
else {
console.log("Connecting to database...");
this.database = require("db-mysql").Database({
"hostname" : "localhost",
"user" : "root",
"password" : "pass",
"database" : "miku",
}).on("ready", function() {
console.log("Database ready, saving for further use.");
this.database = this;
callback(this);
});
}
}
exports.Model = Model;
而且簡單的代碼我用來測試:
orm = require('./orm');
model = new orm.Model();
model.getDB(function (db) { console.log("callback'd"); });
它看起來很好(至少對我來說),但Node.js的失敗內部斷言:
Connecting to database...
node: /usr/include/node/node_object_wrap.h:61: void node::ObjectWrap::Wrap(v8::Handle<v8::Object>): Assertion `handle->InternalFieldCount() > 0' failed.
Przerwane (core dumped)
經過進一步調查,如果在創建數據庫對象之前/期間失敗。我不知道爲什麼會發生這種情況。我首先認爲這是因爲我使用的是git node.js版本,但是當前版本(v0.4.7)也失敗了。
我想在node.js代碼中找到這個問題,目前沒有成功。
另一個小問題:對象初始值設定項中的尾隨逗號(如''database':「miku」,})''雖然有些解釋器允許它們滑動但是「正式」非法。最好不要使用它們。 – 2011-05-15 18:45:05
謝謝,我不知道!在這裏JavaScript看起來有點奇怪,許多語言都允許它們(我見過很多推薦它們的風格指南)。 – 2011-05-15 18:53:56
當我們終於使用Javascript2時,它們將被允許,但是例如,在包括IE8在內的很多瀏覽器中,'[1,2,]。length === 3'是真的。參見http://ejohn.org/blog/bug-fixes-in-javascript-2/ – 2011-05-15 19:15:16