2017-07-08 1 views
0

J'ai une application Sails, qui utilise MySQL comme base de données (bien, MySQL et autres, mais le problème est avec MySQL). Mon problème est de créer un enregistrement sur la table DB, mais toutes les cellules sont vides, et je ne comprends pas pourquoi! Permettez-moi de partager le code et la définition de table:Waterline ORM insertion de cellules vides sur MySQL

CREATE TABLE `components` (
`id` INT NOT NULL AUTO_INCREMENT, 
`column1` VARCHAR(32) NOT NULL, 
`column2` VARCHAR(50) NOT NULL, 
`group` INT, 
`subgroup` INT, 
`column3` INT, 
PRIMARY KEY (`id`), 
FOREIGN KEY (`column1`) REFERENCES `table1`(`recipe_id`), 
FOREIGN KEY (`group`) REFERENCES `table_groups`(`id`), 
FOREIGN KEY (`subgroup`) REFERENCES `table_groups`(`id`), 
FOREIGN KEY (`column3`) REFERENCES `table2`(`id`)) 
DEFAULT CHARSET=utf8; 

définition du modèle Voiles:

module.exports = { 
    connection: 'mysqlDb', 
    autoCreatedAt: false, 
    autoUpdatedAt: false, 
    column1: { 
    type: 'string', 
    required: true 
    }, 
    column2: { 
    type: 'string', 
    required: true 
    },  
    group: { 
    type: 'integer', 
    required: true 
    }, 
    subgroup: { 
    type: 'integer', 
    required: true 
    }, 
    column3: { 
    type: 'integer' 
    } 
}; 

Waterline Créer une requête:

const data = { 
    column1: '383qa8475dd11231aa682y2728172y12', 
    column2: 'canvas', 
    groups: 2, 
    subgroup: 5, 
    column3: 1 
}; 

Components.create(data).exec((error, results) => { 
    if(error) console.error(error); 
    else console.log('Created!'); 
}); 

Il ne casse pas, mais le dossier sur MySQL est vide, alors pourquoi est-ce que tout est vide ??? Dans les colonnes INT, insère un 0.

Qu'est-ce qui me manque?

Merci!

Répondre

0

Oh mon ... J'ai trouvé le problème. J'ai oublié d'envelopper les noms de colonnes, dans le modèle, les attributs clés à l'intérieur, de sorte que le modèle devrait ressembler à ceci:

module.exports = { 
    connection: 'mysqlDb', 
    autoCreatedAt: false, 
    autoUpdatedAt: false, 
    attributes: { 
    column1: { 
     type: 'string', 
     required: true 
    }, 
    column2: { 
     type: 'string', 
     required: true 
    },  
    group: { 
     type: 'integer', 
     required: true 
    }, 
    subgroup: { 
     type: 'integer', 
     required: true 
    }, 
    column3: { 
     type: 'integer' 
    } 
    } 
}; 

erreur très stupide, mais ça m'a coûté HEURES! Quoi qu'il en soit, c'est bête, mais je vais laisser ma question ici, si quelqu'un fait la même erreur.