私はそれらの間の関係を定義しようとしている3つのモデルを持っています。続編で関係を宣言していますか?
モデル: ユーザー 支払い 債務者
- ユーザーが
- お支払いは、ユーザーに属している多くの支払いを持っている
- 支払いは
- 債務者が属する支払へ
- 債務者が属する多くの債務者を持っていますお支払いまで
ソースとターゲットでリレーションシップを定義する必要はありますか?すなわち
User.hasMany(Payment, {as: 'Payments'})
とも
Payment.belongsTo(User)
または私はちょうど一つのモデルでそれを定義して逃げることができますか?
両方で定義しようとするとエラーが表示されます。私がインポートするモデルはundefined
なので、 "belongsTo()"や "hasMany()"関数に渡すとエラーが出るcalled with something that's not an instance of Sequelize.Model
私はそれを1つのモデルにしか含めることはできません関係を正しく理解する。
次のように私のモデルは以下のとおりです。
支払いモデル:
import { sequelize } from '../config';
import Sequelize from 'sequelize';
import User from './User';
const Payment = sequelize.define('payment', {
amount: {
type: Sequelize.FLOAT
},
reference: {
type: Sequelize.STRING
},
user_id: {
type: Sequelize.INTEGER
}
});
Payment.belongsTo(User)
export default Payment;
Userモデル:
import { sequelize } from '../config';
import Sequelize from 'sequelize';
import Payment from './Payment';
const User = sequelize.define('user', {
email: {
type: Sequelize.STRING
},
username: {
type: Sequelize.STRING
},
firstName: {
type: Sequelize.STRING
},
lastName: {
type: Sequelize.STRING
},
facebookID: {
type: Sequelize.STRING
}
});
User.hasMany(Payment, {as: 'Payments'})
export default User;
// EDIT
私はAで新しいユーザーを作成しようとするとお支払い、エラーが発生しますpayment is not associated to user!
Payment
(循環依存を)必要と
user
に
payment
にあなたが
User
モデルおよびその逆を必要とするため起こる
exports.create = (req, res) => {
User.create({
email: '[email protected]',
firstName: "Test",
lastName: "Test",
username: 'fnord',
payment: [
{ amount: 10.00},
]
}, {
include: [ Payment ]
})
}
「お支払いはユーザーに関連付けられていません!」と表示されます。私はsequelize-cliを使用してプロジェクトを開始しようとしました。しかし、後遺症は本当に必要ですか?私は実際にそれに付随するすべての余分なもの、つまりシーダーやマイグレーションなどを望んでいません。 – Stretch0
この「支払いはユーザーに関連付けられていません」というエラーはどこで取得できますか?それを引き起こすコードの一部で質問を編集できますか?もちろん、 'sequelize-cli'については、必須ではありません。あなたはそれなしで続けることができますが、循環依存を覚えておいてください。さらに、後でデータベース表を変更するときに移行が必要になります。 – piotrbienias
にエラーの原因となるコードが追加されました。私は支払いで新しいユーザーを作成しようとしていますが、関係が設定されていないと信じています。 – Stretch0