2013-08-13 13 views
9

Ich versuche, einige Daten mit Node.js einzufügen. Ich habe MySQL-Unterstützung mit Npm installiert. Ich habe gerade einige Quellcode überprüft, ich habe folgenden Code geschrieben, ich kann sql-Ausgabe in console.log folgen und SQL-Ausgabe ist korrekt. Aber es betrifft keine Zeilen in der mySQL-Datenbank.Einfügen von Daten mit Node.js

Hier ist mein Code:

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

Ich glaube, ich mein Problem gefunden habe: D Fehler: ER_NO_DB_ERROR: Keine Datenbank –

+0

ausgewählt Wenn das funktioniert, dann ist entweder die Frage löschen oder beantworten und akzeptieren es – SheetJS

+1

arbeiten jetzt ist es nur gut! Danke :) –

Antwort

5

Sie haben einen DB auswählen, bevor Sie eine Abfrage durchführen. Der einfachste Weg ist es zu dem Objekt in dem Aufruf Create hinzuzufügen:

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

Wie Sie aus Ihren Kommentaren darauf hingewiesen haben, die Sie ausgewählt keine Datenbank hatte:

ER_NO_DB_ERROR: No database selected 

Daher müssen Sie zunächst eine Datenbank auszuwählen, und dann funktioniert es wie erwartet. Was Sie hinzufügen müssen, ist die database Eigenschaft auf Ihren Anruf createConnection, so dass Ihr Code wie folgt aussehen sollte:

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

Sein zu spät, aber Wenn diese andere helfen kann.

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' 

Beachten Sie, dass sie SET statt VALUES verwenden. INSERT INTO ... SET x = y ist eine gültige MySQL-Abfrage, während INSET INTO ... VALUES x = y nicht ist.

+7

Bitte kopieren Sie nicht einfach die Antworten von woanders http://stackoverflow.com/questions/21779528/insert-into -fails-with-node-mysql? answertab = votes # 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

Was nützt eine PostgresSQL-Bibliothek für einen MySQL-Entwickler? –

Verwandte Themen