4

node-ormをテストしていますが、モデルをエクスポートする正しい方法が見つかりません。モデル定義(./models/user.js)は次のとおりです。

var orm = require('orm');

var db = orm.connect('pg://user@localhost/accounts', function(success, db) {
  if (!success) {
    console.log('Could not connect to database.');
    return;
  }

  var User = db.define('user', {
    ... // Model schema
  });

  module.exports = User;
});

そして、他の場所(./app.jsなど)で使用しようとすると、次のようになります。

var User = require('./models/user');
...

app.get('/test', function(req, res) {
  var user = new User({
    ...
  });
  user.save(function(err, user) {
    ...
  });

  ...
});

Userは空のオブジェクトであるため、ノードはモデルコンストラクターを呼び出すことができません。node-ormでモデルをエクスポートする適切な方法は何ですか?それはおそらく簡単ですが、私はドキュメントで何かを見つけます…</ p>

4

2 に答える 2

4

あなたの問題はmodule.exports、コールバック関数で設定していることです。ノードのモジュールローディングシステムは、それを行うことはできないと明確に述べています。

モジュールはorm-node、モデルに指定した名前でモジュール エクスポートにモデルを保存します。次のように変更すると、例が機能するはずですapp.js

require('./models/user');
var orm = require('orm');
...

app.get('/test', function(req, res) {
  var user = new orm.user({
    ...
  });
  user.save(function(err, user) {
    ...
  });

  ...
});

require()また、モデルはコールバックで初期化されるため、モデル モジュールの直後には使用できないことに注意してください。get の処理が必要になる前に、データベース接続とモデルの初期化が完了していると思われます/user

おそらく、これらすべてを処理する最も安全な方法は、アプリケーションの初期化を確認し、そのコールバックlisten()の一部として実行することです。orm.connect()

于 2012-04-12T04:29:35.607 に答える
0

それは私がlight-ormでそれを行う方法です:

var ORM = require('light-orm');

var AdsCollection = new ORM.Collection({
    connector: ORM.driver,
    tableName: 'ads'
});

module.exports = AdsCollection;

あなたのORMとかなり似ているはずです。魔法の問題と複雑さのため、node-ormからlight- orm に移行しました。light-orm もご覧ください: https://npmjs.org/package/light-orm

于 2014-01-29T22:26:44.403 に答える