javascript - 带有 orm2 和分离模型文件的 Node Express

标签 javascript node.js orm express node-orm2

我正在使用node&express( Node 框架)。 我不想使用 node-orm2 框架来与我的 MySQL 数据库进行通信。为了保持良好的结构,我想将模型分成单独的文件。我一直在使用 github 上的文档,但不知何故我无法使其工作。

app.js:

app.use(orm.express("mysql://********:********@localhost/*********",
{
    define: function(db, models){
        db.load('./models', function(err){
            models.movie = db.models.Movie;
        });
    }
}));

models.js:

module.exports = function (db, fn) {
    db.load("movie", function (err) {
        if (err) {
            return fn(err);
        }
    });
//etc
return fn();
};

电影.js:

module.exports = function (db, fn) {
    db.define('movie', {
        id          : { type: "number" },
        title       : { type: "text" },
        year        : { type: "number" },
        rating      : { type: "number" },
        description : { type: "text" }
    }, {
        methods : {

        }
    });

    return fn();
};

最佳答案

已从 github 复制帮助问题跟踪器(来自 lastmove ):

我正在使用内置的 Express 中间件。 这对我来说可以。 我有一个文件夹模型。 与一档标准型号。 用户模型示例: 用户.js

module.exports = function(db, cb)
{
    var User = db.define('user', {
              userName : String,
              password : String,
              mail : String,
              mark : Number,
              lastAlertSent : Date,
              subscriptionDate : Date,
              lastAction : Date,
              specialUser : Boolean,
              uuid  : String
              },
              {
         validations:
                 {
                  userName : [orm.enforce.required(error.errorStr(error.missingRequiredField, "userName missing")), orm.enforce.unique({ ignoreCase: true },  error.errorStr(error.usernameAlreadyUsed, "userName already used")), orm.enforce.ranges.length(3, undefined, error.errorStr(error.usernameTooShort, "userName too shoty"))], 
...

在模型文件夹中我有一个index.js 在这个文件中,我定义了模型之间的关系,并加载了模型。

文件: 模型/index.js

checkError = function(cb, err)
{
    if (err)
        return cb(err);
    return cb();
}

module.exports = function(db, cb)
{
    db.load("./user.js", function (err) {checkError(cb, err)});
    db.load("./alert.js", function (err) {checkError(cb, err)});
    db.load("./comment.js", function (err) {checkError(cb, err)});
    db.load("./metropole.js", function (err) {checkError(cb, err)});
    db.load("./period.js", function (err) {checkError(cb, err)});
    db.load("./stop.js", function (err) {checkError(cb, err)});
    db.load("./line.js", function (err) {checkError(cb, err)});
    db.load("./types.js", function (err) {checkError(cb, err)});
    db.load("./historique.js", function(err) {checkError(cb, err)});

    var User = db.models.user;
    var Alert = db.models.alert;
    var Comment = db.models.comment;
    var Metropole = db.models.metropole;
    var Stop = db.models.stop;
    var Line = db.models.line;
    var Period = db.models.period;
    var Types = db.models.types;
    var Hist = db.models.historique;

    Alert.hasOne("stop", Stop, {reverse : "alerts"});
    Alert.hasOne("line", Line, {reverse : "alerts"});

毕竟在我的 Express 初始化中我添加了这个:

app.use(orm.express(opts, {
    define: function (db, models, next) {
            db.load("./models/models", function (err2)
        {
            if (err2)   
                throw err2;
            db.sync();
        })
        next();
    }

关于javascript - 带有 orm2 和分离模型文件的 Node Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071004/

相关文章:

javascript - 从 PHP 过渡到 JavaScript(AngularJS、NodeJS 等...)的最佳方式

javascript - Express MongoDB find() 基于 _id 字段

java - mappedBy 引用了一个未知的目标实体属性

java - 从 Java 调用 javascript 函数

javascript - 正则表达式匹配字符串中任意位置的 3 个 '+' 字符

javascript - 为什么我不能捕获从 node-postgres 抛出的错误?

orm - 代码生成器与 ORM

.NET ORM - NHibernate(或 SubSonic 或其他)与使用 Entity Framework 相比有什么优势?

javascript - Flask/Jinja - 单击或计时器上的渲染选项卡,无需刷新页面

javascript - 增加谷歌地图中热图点的强度