2013-08-13 27 views
9

Node.js. ile bazı veriler eklemeye çalışıyorum. Npm ile mysql desteği kurdum. Sadece bazı kaynak kodları kontrol ettim, aşağıdaki kodu yazdım, sql çıktısını console.log dosyasında takip edebilirim ve SQL çıkışı doğrudur. Ama mySQL veritabanındaki herhangi bir satırda etkilemez. Eğer yorumlardan işaret ettiğimiz gibiNode.js ile Veri Ekleme

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

Benim sorun buldum: D Hata: ER_NO_DB_ERROR: bu da soruyu silmek veya cevaplamak ve Şimdi sadece düzgün şekilde çalışıyorsa –

+0

seçilmiş! teşekkür ederim :) – SheetJS

+1

onu kabul sonra, çalıştıysa Hiçbir veritabanı –

cevap

5

: kod aşağıdaki gibi görünmelidir böylece Ne eklemem gerekiyor, createConnection geçirme ifadenize database özelliktir. En kolay yolu createConnection çağrısında nesnesine eklemektir:

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

, seçili hiçbir veritabanını vardı: Burada

benim kodudur

ER_NO_DB_ERROR: No database selected 

Dolayısıyla, önce bir veritabanı seçmek gerekir ve o zaman beklendiği gibi çalışır. Bir sorgu gerçekleştirmeden önce bir DB seçmek zorunda

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

Onun geç ama Eğer bu diğer yardımcı olabilir.

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' 

VALUES yerine SET kullandığına dikkat edin. INSERT INTO ... SET x = y geçerli bir MySQL sorgusudur, INSET INTO ... DEĞERLER x = y degildir.

+7

Sadece başka yerden gelen cevapları kopyalayıp yapıştırmayın http://stackoverflow.com/questions/21779528/insert-into -fails-with-node-mysql? answertab = oy # 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

Bir MySQL geliştiricisine bir PostgresSQL kütüphanesi ne kadar iyi? –