Knex de NodeJS et de l'insertion dans la base de données

Je suis nouveau sur nodejs et tente de mettre en place un serveur d'API, voici ma première tentative. Je voulais utiliser mysql au lieu de mongo db.

Mon problème est que " knex ("l'utilisateur").insert({email: req.corps.email}); " ne semble pas vouloir enregistrer dans la base de données.

            var dbConfig = {
client: 'mysql',
connection: {
host     : 'localhost',
user     : 'root',
password : '',
database : 'db_nodeapi'
}
};
var express = require('express');                       //call express
var bodyParser = require('body-parser');                //call body-parser
var knex = require('knex')(dbConfig);                   //set up database connection
var app = express();                                    //define our app using express
app.use(bodyParser.urlencoded({ extended: true }));     //configure app to use bodyParser() 
app.use(bodyParser.json());                             //this will let us get the data from a POST
var router     = express.Router();                      //get an instance of the express Router
router.use(function(req, res, next) {                   //middle ware for authentication
console.log(' -Logging- ');
next();                                             //continue to next route without stopping
});
router.get('/', function(req, res) {                    //listen for a post on root
res.json({ message: ' -Success- ' });   
});
router.route('/user')                                   //set up user route
.post(function(req, res) {                          //listen for a post on user
console.log(' -Post -');                        //report a post
knex('user').insert({email: req.body.email});   //insert user into user table
res.json({ success: true, message: 'ok' });     //respond back to request
});
app.use('/api', router);                                //register routes beginning with /api  
var port = process.env.PORT || 8080;                    //set server port number
app.listen(port);                                       //setup listener
console.log('Magic happens on port ' + port);           //report port number chosen

Problème est que je ne peux pas obtenir knex à ajouter à la base de données!

CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL,
`email` varchar(255) NOT NULL
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Ici est la base de données

  • 1) êtes-vous sûr un e-mail devient-elle affichée? Qu'advient-il si vous modifiez la ligne de la console.log ("Post -") à la console.log ("Post -' + req.corps.e-mail) ? 2) Êtes-vous sûr que c'est la syntaxe pour les insérer? Il ne ressemble pas à la documentation actuelle, qui utilise quelque chose de plus comme knex.insert(info).dans('utilisateur')
  • req.corps.le courrier électronique est définie à l'affiche de la valeur de l'e-mail, j'ai vérifié. corps de l'analyseur prend soin de cela, je suis amené à croire.
  • Ok, so far so good. Maintenant, quels sont les knex? Êtes-vous sûr que la syntaxe de la requête fonctionne? Par exemple, si vous supprimez le code de la route et ajouter une ligne rapide après vous avez besoin de knex (quelque chose comme): knex ("l'utilisateur").insert({email:'[email protected]'}); ce qui se passe? Et puis ce qui se passe si vous ajoutez une deuxième ligne comme knex.insert({email: '[email protected]}).dans('utilisateur') est-ce que le travail?
  • knex.insert({email: req.corps.email}).dans('utilisateur'); essayé rien, pas même une erreur. Aussi essayé knex ("l'utilisateur").insert({email:'[email protected]'}); var après knex = ... ligne. rien. Essayé knex.insert({email: '[email protected]}).dans('utilisateur') ... rien. Essayé les deux ... rien.
  • Hmm. Il se pourrait que knex n'est pas de la connexion à la base de données, ou peut-être qu'il ne fonctionne pas en mode silencieux. l'id est spécifié comme not null - est-il lié à une séquence ou d'un auto-incrément ou quelque chose? Ou est-il possible c'est un point de rupture? BTW - vous pouvez ajouter un 'debug: true," à votre dbConfig avoir la syntaxe SQL et des liaisons de paramètres de sortie de la console. Ce serait utile.
  • J'ai enlevé l'id complètement, la pensée qui allait l'aider ... debug: true vais essayer. Code trop long à poster.
  • Essayé de configurer un compte d'utilisateur pour la table, juste au cas où le mot de passe ne peut pas être vide. - rien.
  • Laissez-nous continuer cette discussion dans le chat.