sails.js でリレーショナルスキーマを設定し、結合を実行する方法を誰かが私に案内できますか?
協会は正式にウォーターラインでサポートされています
ドキュメントから :
Sails and Waterlineを使用すると、複数のデータストア間でモデルを関連付けることができます。つまり、ユーザーがPostgreSQLに住んでいて、写真がMongoDBに住んでいる場合でも、同じデータベースに住んでいるかのようにデータを操作できます。同じアダプターを使用して、さまざまな接続(つまり、データストア/データベース)にまたがる関連付けを設定することもできます。これは、たとえば、アプリが会社のデータセンターのMySQLデータベースに保存されているレガシーレシピデータにアクセス/更新する必要がある場合に便利ですが、クラウドの新しいMySQLデータベースから食材データを保存/取得することもできます。
私は、Sailsで使用されるORMであるWaterlineの作者です。ウォーターラインは新品で、常に機能を追加しています。現在、関連付けはサポートされていませんが、ロードマップの次の段階です。私たちは、ほとんどの人が本当に気に入っていると思われる関連付け用のAPIを作成しました。 [Proposed Sails Associations API] [1]で、進行中の作業と提案されたAPIを表示できます。
次は、協会とトランザクションに取り組み、来月かそこらでそれらを準備することを望みます。
一方、MySQLまたはPostgreSQLアダプターを使用している場合、両方のアダプターがraw
.query()
メソッドを公開します。これにより、手動で作成したSQLクエリを渡して実行できます。これは理想的ではないことは承知していますが、関連付けと結合のサポートを受けながら、アプリの構築を続けることができます。Queryメソッドの関数シグネチャは次のとおりです。
Model.query(<sql query>, <optional data>, callback);
パーティクルバナナの例は機能しますが、実際には「var instance = new User._model(values)」のような「new」を使用する必要があります。私は次のコードを使用しており、動作します。
Accounts.query(query, function(err, accounts) {
if (err)
return fn(err);
accounts = _.map(accounts, function(account) {
return new Accounts._model(account);
});
fn(null, accounts);
});