2017-06-15 7 views
2

sailsjsを初めて使用しています。アプリケーションのバックエンドをsailsjsに変更しようとしています。私が使用する必要のある既存のデータベースを用意してください。この空の誤差は1対多の関連付けを使用しようと行き方:Sailsjs 1対多の空の結果

table user 
id | name 
1 | Someone 


table new_car 
name | user_id 
Audi | 1 
BMW  | 1 

モデル:: (私は、ネーミング・わからないです

{ 
    "Result": [ 
    { 
     "newCars": [], 
     "name": 'Someone', 
     "id": 1 
    } 
    ] 
} 

はこれらは私が持っている2つのサンプルのテーブルの構造であり、

:コレクション、協会及び経由)

//UserController.js 
module.exports = { 
    tableName: 'user', 
    attributes: { 
    name: { 
     type: 'string' 
    }, 
    newCars: {    //i can name this anything? 
     collection: 'newCar',  //should this be new_car (table name)? 
     via: 'user'   //this is one-side table name? 
    } 
    }, 
    autoCreatedAt: false, 
    autoUpdatedAt: false 
}; 


//NewCarController.js 
module.exports = { 
    tableName: 'new_car', 
    attributes: { 
     name: { 
      type: 'string' 
     }, 
     users: { 
      model: 'User' 
     }   
    }, 
    autoCreatedAt: false, 
    autoUpdatedAt: false 
}; 

コントローラ - の

コメントにもいくつか質問があります。

答えて

1

修正してしまった。私のような初心者にとっては役に立つかもしれません。プライマリキーと外部キーを特定するだけで済みます。

//at the one side 
id: { 
    type: 'integer', 
    primaryKey: true 
} 


//at the many side  
user: { 
    columnName: 'user_id', 
    model: 'user' 
} 
1

collectionの名前をnewcarに変更する必要があります。 Sailsでは、モデルがviacollectionmodelで参照されるときはいつでも、小文字の名前を使用する必要があります。続きを読むhere。あなたはSailsは独自の関連テーブルを作成できるようにする必要があります

。たとえば、モデルUserCarを作成し、Sailsにマップを作成させる必要があります。内部では、user_idcar_idにマップするUser_Car(必ずしも同じ名前ではない)表を作成して行います。

//User.js 
module.exports = { 

    attributes: { 
    name: 'string', 

    cars: { 
     collection: 'car', 
     via: 'user' 
    } 
    } 
}; 

// Car.js 
module.exports = { 

    attributes: { 
    name: 'string', 

    user: { 
     model: 'user' 
    } 
    } 
}; 

今あなたが/userHTTP POSTを送信することにより、Userを作成することができます。これは、今、あなたのモデルは次のようになりsails-generate-api

$ sails generate api User

$ sails generate api Car

を使用して2つのapisを作成することで簡単に行うことができます車には/car

関連 User=>Carを作成するには

HTTP POST

/user/:id/car/:idにあなたがGET /user/:id経由Userの詳細を取得する場合さて、user[:id]が所有するすべてのCarsが移入されます送信します。

+0

ありがとうございますが、変更後の運はまだお勧めしません。私のテーブル構造とあなたのコメントを見て、 'via'は 'user'または 'user_id'でなければなりません。それでもuser_idに変更しようとしましたが、結果は空です。( – aiiwa

+0

は 'Sails'アダプタによって作成された' user_id'フィールドですか? –

+0

いいえ、私のデータベースはsailsjsを試用する前の状態です。 – aiiwa

関連する問題