web-dev-qa-db-ja.com

Node.jsによるデータの挿入

Node.jsでデータを挿入しようとしています。 mysqlサポートをnpmでインストールしました。いくつかのソースコードの周りをチェックしたところ、次のコードを書きました。console.logでSQL出力を追跡でき、SQL出力は正しいです。しかし、それはmySQLデータベースのどの行にも影響しません。

これが私のコードです:

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) {

});
11
Onder OZCAN

クエリを実行する前にDBを選択する必要があります。最も簡単な方法は、それをcreateConnection呼び出しでオブジェクトに追加することです。

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

それは遅くなりますが、これが他の人を助けることができるなら。

 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の代わりにSETを使用していることに注意してください。 INSERT INTO ... SET x = yは有効なMySQLクエリですが、INSET INTO ... VALUES x = yは有効ではありません。

17
user254153

コメントから指摘したように、データベースは選択されていません。

ER_NO_DB_ERROR: No database selected

したがって、最初にデータベースを選択する必要があります。その後、データベースは期待どおりに機能します。追加する必要があるのは、databaseへの呼び出しのcreateConnectionプロパティなので、コードは次のようになります。

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) {
  // ...
});
4
Golo Roden
   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
seme