私はゲームを作ろうとしています。私はマッチを作成する必要があります。私はこの方法の問題を考える。ユーザーがマッチを作成します。 3番目のテーブルでは、playerIdとgameIdを保存します。他のユーザーが試合に参加すると、再びplayerIdとgameIdを保存します。それから、gameIdを持つプレイヤーと共通の質問をして、ゲームを開始します。モデル間にたくさんの関係がある場合、どのようにクウェーを作るのですか?
最初に、1人のユーザーが多くのゲームを持っている可能性があります。第二に、ワンマッチは多くのゲームを持つかもしれない。これはマッチのモデルである:
module.exports = {
attributes: {
name: {
type: 'string'
},
description: {
type: 'string'
},
game: {
collection: 'game',
via: 'gameId',
}
}
};
これは、Userモデルである:
var bcrypt = require('bcrypt');
module.exports = {
attributes: {
name: {
type:'string'
},
email: {
type: 'email',
required: true,
unique: true
},
password: {
type: 'string',
},
passwordConfirmation: {
type: 'string'
},
passwordEncrypted: {
type: 'string'
},
creator: {
collection: 'game',
via: 'playerId'
},
toJSON: function(){
var obj = this.toObject();
delete obj.password;
delete obj.passwordConfirmation;
delete obj._csrf;
return obj;
}
}, beforeCreate: function(values, next){
console.log("Acabo de entrar a eforeCreate");
var password = values.password;
var passwordConfirmation = values.passwordConfirmation;
if(!password || !passwordConfirmation || password != values.passwordConfirmation) {
var passwordDoesNotMatchError = [{
name: 'passwordDoesNotMatchError',
message: 'Las contraseñas deben coincidir'
}]
return next({
err: passwordDoesNotMatchError
});
}
require('bcrypt').hash(values.password, 10, function passwordEncrypted(err, EncryptedPassword){
values.EncryptedPassword = EncryptedPassword;
next();
});
}
};
これは、ゲームのモデルである:
module.exports = {
attributes: {
gameId: {
model: 'match'
},
playerId: {
model: 'user'
}
}
};
は最終的に、これは私のコントローラです:
module.exports = {
createMatch: function(req,res){
var matchObj = {
name: req.param('name'),
description: req.param('description'),
}
Match.create(matchObj, function(err, match){
if(err){
console.log("el error fue: " + err);
return res.send(err);
} console.log("Entro en create");
return res.json(match);
})
var gameObj = {
gameId: 'aclaration: I dont know how do I get the match.id',
playerId: req.session.me
}
Game.create(gameObj,function(err,game){
console.log("entro a GameCreate");
if(err){
return res.send(err);
} return res.json(game);
})
}
};
私はMatchを作成できますが、Game.creaこのエラーを送信してください:
_http_outgoing.js:344新しいエラーをスローする( '送信後にヘッダーを設定できません');^
エラー:送信後にヘッダーを設定できません。
誰かが私を助けることができますか?おそらく、私は多くのエラーがあります。ありがとう。ここでは、物事の
ありがとう、その作品は完璧です。なぜあなたはもっと多くの情報をgameIdやuserIdよりも多くのテーブルを必要としますか?それ以外の場合は必要ありません –
マッチとユーザー間の多対多の関係を格納するために_join_表が必要です。格納される情報だけが 'matchId'と' userId'(テーブルの 'id')の場合、Sailsは明示的なモデルを持たずに管理します。しかし、結合テーブルにもっと多くの属性が必要な場合、Sailsはそれを現在サポートしていません。したがって、両方の場合に結合テーブルがあります。明示的に宣言したり、暗黙的にそれを管理するフレームワークです。 多数関係:http://sailsjs.com/documentation/concepts/models-and-orm/associations/many-to-many – Sangharsh