2013-08-13 26 views
9

Sto cercando di inserire alcuni dati con Node.js. Ho installato il supporto mysql con npm. Ho appena controllato un codice sorgente, ho scritto il codice seguente, posso seguire l'output sql in console.log e l'output SQL è corretto. Ma non ha effetto su nessuna riga nel database mySQL.Inserimento dati con Node.js

Ecco il mio codice:

var mysql  = require('mysql'); 

var connection = mysql.createConnection({ 
    host  : 'cccc.net', 
    user  : 'username', 
    password : 'password', 
}); 

var post = {srcUserID: userSrcID, destUserID: msg.userid, messageContent: msg.txt, messageSendDate:sendDate }; 

connection.query('INSERT INTO messages VALUES ?', post, function(err, result) { 

}); 
+0

Credo di aver trovato il mio problema: D Errore: ER_NO_DB_ERROR: Nessun database selezionato –

+0

Se che ha funzionato, quindi eliminare la domanda o risposta e lo accetto – SheetJS

+1

Ora che sta funzionando bene! grazie :) –

risposta

5

È necessario selezionare un DB prima di eseguire una query. Il modo più semplice è quello di aggiungere all'oggetto nella chiamata CreateConnection:

var connection = mysql.createConnection({ 
    host  : 'cccc.net', 
    user  : 'xxxxx_usr', 
    password : 'xxxxxxx', 
    database : 'database_name' 
}); 
4

Come hai sottolineato dai vostri commenti, voi hanno avuto nessun database selezionato:

ER_NO_DB_ERROR: No database selected 

Quindi, è necessario selezionare un database prima, e quindi funziona come previsto. Quello che dovete aggiungere è la database immobile alla sua chiamata alla createConnection, in modo che il codice dovrebbe essere simile al seguente:

var mysql = require('mysql'); 

var connection = mysql.createConnection({ 
    host: 'cccc.net', 
    user: 'xxxxx_usr', 
    password: 'xxxxxxx', 
    database: 'name of your database goes here …' 
}); 

var post = { 
    srcUserID: userSrcID, 
    destUserID: msg.userid, 
    messageContent: msg.txt, 
    messageSendDate:sendDate 
}; 

connection.query('INSERT INTO messages VALUES ?', post, function (err, result) { 
    // ... 
}); 
14

della sua fine, ma se questo può aiutare gli altri.

var post = {id: 1, title: 'Hello MySQL'}; 
var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) { 
    // Neat! 
}); 
console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL' 

Si noti che utilizzano SET anziché VALORI. INSERT INTO ... SET x = y è una query MySQL valida, mentre INSET INTO ... VALUE x = y non lo è.

+7

Si prega di non copiare e incollare semplicemente le risposte da altrove http://stackoverflow.com/questions/21779528/insert-into -fails-with-node-mysql? answertab = voti # tab-top – Nick

0
const pgp = require('pg-promise')() 

// const connection = { host: 'localhost', port: 5432, db: 'users' } 
const connection = process.env.NODE_ENV === 'test' 
    ? 'postgres:///users_test' 
    : 'postgres:///users' 
const db = pgp(connection) 

const addUser = (userName, jobName) => { 
     return db.one(` 
      SELECT j.job_id 
      FROM jobs AS s 
      WHERE j.job_name = $1` 
      , [jobName]) 
      .then((jobs) => { 
     return db.one(` 
      INSERT INTO users 
      (name, job_id) 
      VALUES ($1, $2) 
      RETURNING user_id`, 
      [userName, jobs.job_id]) 
    }) 
    } 


    addUser('Micheal', 'teacher') 
     .then(console.log) 
     .catch(console.error) 




     const addUserToCompany = (userName, companyName) => { 
     let userId 
     let companyId 
     return db.one(` 
      SELECT user_id 
      FROM users 
      WHERE name=$1`, [userName]) 
      .then((user) => { 
      userId = user.user_id 
      return db.one(` 
      SELECT company_id 
      FROM companies 
      WHERE name=$1`, [companyName]) 
      }) 
      .then((company) => { 
      ownerId = company.company_id 
      return db.one(` 
       INSERT INTO companyUsers 
       (user_id, company_id) 
       VALUES 
       ($1, $2) 
       RETURNING *`, 
       [userId, companyId]) 
      }) 
     } 
     addUserToCompany('Micheal', 'Code Academy') 
     .then(console.log) 
     .catch(console.error) 



     const updateUserName = (userId, newName) => { 
      db.oneOrNone('UPDATE users SET name=$1 WHERE user_id=$2 RETURNING user_id', [newName, userId]) 
      .then((returnedId) => { 
       if (returnedId) return { success: true, message: '' } 
       return { success: false, message: `Could not find userId ${userId}` } 
      }) 
      .catch(err => Object({ success: false, message: err.message })) 
    } 
    updateUserName(17, 'Micheal-Moore') 

module.exports = { addUser, addUserToCompany , updateUserName } 
+0

A che serve una libreria PostgresSQL per uno sviluppatore MySQL? –

Problemi correlati