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) {
});
クエリを実行する前にDBを選択する必要があります。最も簡単な方法は、それをcreateConnection呼び出しでオブジェクトに追加することです。
var connection = mysql.createConnection({
Host : 'cccc.net',
user : 'xxxxx_usr',
password : 'xxxxxxx',
database : 'database_name'
});
それは遅くなりますが、これが他の人を助けることができるなら。
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は有効ではありません。
コメントから指摘したように、データベースは選択されていません。
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) {
// ...
});
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 }