Comment ajouter des données au modèle de séquençage sous l'action de quatre types d'associations [inachevé]

Supposons qu'il existe deux modèles, un modèle stu (étudiant) et un modèle score (score). Alors, comment ajouter le score du nouvel étudiant tout en ajoutant le nouvel étudiant.

1. Définissez stu et score sur score : stu = 1 : 1

方案1:有别称
models.Score.belongsTo(models.Stu, {
    as: 'user', 
    foreignKey: 'userId',
    targetKey: 'id'
});
models.Score.create({
    user: {
        name: '添加用户',
        age: 50,
        sex: '女',
    },
    projectName: '历史',
    projectScore: '150'
}, {
    raw: true,
    include: [{
        model: models.Stu,
        as: 'user'
    }]
}).then((res) =>{
    console.log(JSON.stringify(res, null, 2))
}).catch((err) => {
    console.log(err)
});


方案2:无别称
models.Score.belongsTo(models.Stu, {
    foreignKey: 'userId',
    targetKey: 'id'
});
models.Score.create({
    stu: {
        name: '添加用户',
        age: 50,
        sex: '女',
    },
    projectName: '历史',
    projectScore: '150'
}, {
    raw: true,
    include: [{
        model: models.Stu
    }]
}).then((res) =>{
    console.log(JSON.stringify(res, null, 2))
}).catch((err) => {
    console.log(err)
});

Dans le type de relation 1:1, les opérations d'addition normales peuvent être effectuées avec ou sans alias 

 2. Définissez stu et score sur stu:score=1:n

      2.1. Sans autre nom

models.Stu.hasMany(models.Score, {
    foreignKey: 'userId', // 对于一对多关系,外键在于多的那一方
    targetKey: 'id'
})

models.Stu.create({
    name: '添加用户',
    age: 50,
    sex: '女',
    score: {
        projectName: '历史',
        projectScore: '150'
    }
}, {
    raw: true,
    include: [{
        model: models.Score
    }]
}).then((res) =>{
    console.log(JSON.stringify(res, null, 2))
}).catch((err) => {
    console.log(err)
});

   Lorsqu'aucun alias n'est défini pour le score, la valeur par défaut normale doit être le nom de la table score, mais lorsqu'il est exécuté, on constate que l'instruction sql imprimée sur la console est la suivante : seules les informations de stu sont ajoutées et le score ne sera pas ajouté comme 1:1.

 

   2.2 En cas d'autre nom

models.Stu.hasMany(models.Score, {
    foreignKey: 'userId', // 对于一对多关系,外键在于多的那一方
    targetKey: 'id',
    as: 'score'
})

models.Stu.create({
    name: '添加用户',
    age: 50,
    sex: '女',
    score: {
        projectName: '历史',
        projectScore: '150'
    }
}, {
    raw: true,
    include: [{
        model: models.Score,
        as: 'score'
    }]
}).then((res) =>{
    console.log(JSON.stringify(res, null, 2))
}).catch((err) => {
    console.log(err)
});

  Dans le cas d'un autre nom, exécutez le code ci-dessus, et vous pouvez voir que le message imprimé sur la console a ajouté à la fois des informations sur stu et des informations sur le score.

 

3. A suivre

 

 

Pour résumer:

Dans le type de relation 1:1, la présence d'un alias n'a aucun effet sur le résultat de l'ajout, mais dans le type de relation 1:n, si l'alias n'est pas ajouté, les données ne peuvent pas être ajoutées à la base de données normalement. La raison est inconnue pour le moment, si quelqu'un le sait, merci de le signaler ! 

   

 

Je suppose que tu aimes

Origine blog.csdn.net/QiZi_Zpl/article/details/104967858
conseillé
Classement