J'essaie d'insérer des données avec Node.js. J'ai installé le support MySQL avec NPM. Je viens de vérifier un code source, j'ai écrit le code suivant, je peux suivre la sortie SQL dans le fichier console.log et la sortie SQL est correcte. Mais cela n’affecte aucune des lignes de la base de données MySQL.
Voici mon 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) {
});
Vous devez sélectionner une base de données avant d’effectuer une requête. Le moyen le plus simple consiste à l'ajouter à l'objet dans l'appel de createConnection:
var connection = mysql.createConnection({
Host : 'cccc.net',
user : 'xxxxx_usr',
password : 'xxxxxxx',
database : 'database_name'
});
C'est trop tard, mais si cela peut aider les autres.
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'
Notez qu'ils utilisent SET au lieu de VALUES. INSERT INTO ... SET x = y est une requête MySQL valide, alors que INSET INTO ... VALUES x = y n'est pas.
Comme vous l'avez indiqué dans vos commentaires, aucune base de données n'a été sélectionnée:
ER_NO_DB_ERROR: No database selected
Par conséquent, vous devez d'abord sélectionner une base de données, puis tout fonctionnera comme prévu. Ce que vous devez ajouter, c'est la propriété database
à votre appel à createConnection
. Votre code doit donc ressembler à ceci:
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 }