7

最新のウォーターラインが関連付けをサポートするようになりました。これは一対多の例です

// A user may have many pets
var User = Waterline.Collection.extend({

  identity: 'user',
  connection: 'local-postgresql',

  attributes: {
    firstName: 'string',
    lastName: 'string',

    // Add a reference to Pets
    pets: {
      collection: 'pet',
      via: 'owner'
    }
  }
});

var Pet = Waterline.Collection.extend({

  identity: 'pet',
  connection: 'local-postgresql',

  attributes: {
    breed: 'string',
    type: 'string',
    name: 'string',

    // Add a reference to User
    owner: {
      model: 'user'
    }
  }
});

ownerこれにより、ペット コレクションで呼び出されるフィールドが作成されます。これは、既存の DB を操作する場合を除いて問題ありません。それは外部キーと呼ばれますowner_id

データベースで使用されるフィールド名をオーバーライドする方法はありますか?

4

1 に答える 1

8

columnNameプロパティを設定することで、モデル属性に使用される列名を変更できます。

  attributes: {
    breed: 'string',
    type: 'string',
    name: 'string',

    // Add a reference to User
    owner: {
      columnName: 'owner_id',
      model: 'user'
    }
  }

また、Sails でモデルを定義する場合、Waterline から直接拡張するのではなく/api/models、適切な名前でモデル ファイルを保存するだけでよいことに注意してUser.jsください。

module.exports = {

   attributes: {
      breed: 'string',
      type: 'string',
      name: 'string',

      // Add a reference to User
      owner: {
         model: 'user',
         columnName: 'owner_id'
      }
   }
}

本当にデフォルトを上書きしたい場合を除いて、Sails / Waterline に ID と接続を処理させてください。

于 2014-04-03T21:46:24.370 に答える