2013-08-13 39 views
9

Tôi đang cố chèn một số dữ liệu bằng Node.js. Tôi đã cài đặt hỗ trợ mysql với npm. Tôi chỉ kiểm tra arround một số mã nguồn, tôi đã viết mã sau, tôi có thể làm theo đầu ra sql trong console.log và SQL đầu ra là chính xác. Nhưng nó không ảnh hưởng đến bất kỳ hàng nào trong cơ sở dữ liệu mySQL.Chèn dữ liệu với Node.js

Đây là mã của tôi:

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

Tôi nghĩ rằng tôi đã tìm thấy vấn đề của tôi: D Lỗi: ER_NO_DB_ERROR: Không có cơ sở dữ liệu được lựa chọn –

+0

Nếu mà làm việc, sau đó xóa các câu hỏi hoặc trả lời và chấp nhận nó – SheetJS

+1

Bây giờ nó chỉ làm việc tốt! cảm ơn bạn :) –

Trả lời

5

Bạn phải chọn một DB trước khi thực hiện một truy vấn. Cách dễ nhất là thêm nó vào đối tượng trong lệnh gọi createConnection:

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

Như bạn đã chỉ ra từ bình luận của bạn, bạn không có cơ sở dữ liệu được lựa chọn:

ER_NO_DB_ERROR: No database selected 

Do đó, bạn cần phải chọn một cơ sở dữ liệu đầu tiên, và sau đó nó hoạt động như mong đợi. Những gì bạn cần phải thêm là database tài sản cho cuộc gọi của bạn để createConnection, do đó, mã của bạn sẽ giống như sau:

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

Nó đến trễ nhưng nếu điều này có thể hữu ích.

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' 

Lưu ý rằng họ sử dụng SET thay vì VALUES. INSERT INTO ... SET x = y là một truy vấn MySQL hợp lệ, trong khi INSET INTO ... VALUES x = y thì không.

+7

Vui lòng không chỉ sao chép và dán câu trả lời từ nơi khác http://stackoverflow.com/questions/21779528/insert-into -fails-with-node-mysql? answerertab = 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

Thư viện PostgresSQL tốt cho một nhà phát triển MySQL là gì? –

Các vấn đề liên quan