Nat*_*int 4 orm require node.js
我正在使用Node.js ORM模块:https://github.com/dresende/node-orm
我可以通过这样做来创建一个模型:
var orm = require("orm");
var db = orm.connect("creds", function (success, db) {
if (!success) {
console.log("Could not connect to database!");
return;
}
var Person = db.define("person", {
"name" : { "type": "string" },
"surname": { "type": "string", "default": "" },
"age" : { "type": "int" }
});
});
Run Code Online (Sandbox Code Playgroud)
问题是我想将Person(以及所有其他模型)放在外部包含中.
如果我做这样的事情:
require("./models/person.js");
Run Code Online (Sandbox Code Playgroud)
我不能在其中使用db变量,因为它只存在于orm.connect()的回调函数的上下文中.我无法移动orm.connect到require(person.js)并为模型信息执行module.export,因为在父脚本中,将发生require,然后下一行不会准备好模型因为它没有等待回调.IE
//person.js
// db and orm get defined up here as before
Person = {}; // code from above, with the define and etc.
Module.exports = Person;
//app.js
person = require("./models/person.js");
console.log(person); // returns undefined, connect callback isn't done yet
Run Code Online (Sandbox Code Playgroud)
我觉得有一种明显的方法可以做到这一点.
小智 7
也许可以让person.js导出成一个函数,并传入db?像这样:
//app.js
var orm = require("orm");
var db = orm.connect("creds", function (success, db) {
if (!success) {
console.log("Could not connect to database!");
return;
}
var Person = require("./models/person.js")(db);
});
//person.js
module.exports = function(db){
return db.define("person", {
"name" : { "type": "string" },
"surname": { "type": "string", "default": "" },
"age" : { "type": "int" }
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |