nodeJS中查询和表达的问题
Problems with query and express in nodeJS
我正在使用 express 为带有 nodeJS 的服务器开发一个网页。我在注册页面上,我正在尝试验证用户插入的数据,但是当我进行查询时出现错误。
auth.js
const express = require('express');
const router = express.Router();
const { bd } = require('../database');
const help_functions = require('../lib/common');
router.post('/signup', async (req,res) => {
const fullname = req.body['fullname'];
const email = req.body['email'];
const username = req.body['username'];
const password = req.body['password'];
const password_repeat = req.body['password_repeat'];
var validation_msg = help_functions.validateSignUp(fullname, email, username, password, password_repeat);
validation_msg = await help_functions.checkRepeatedUserEmail(email);
});
database.js
const mysql = require('mysql');
const { promisify } = require('util');
const database = { // Database credentials }
const bd = mysql.createPool(database);
bd.getConnection((err,connection) => {
if (err) {
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
console.error('Database connection failed !');
}
if (err.code === 'ER_CON_COUNT_ERROR') {
console.error('Database has too many connections !');
}
if (err.code === 'ECONNREFUSED') {
console.error('Database connection was refused !');
}
}
if (connection) {
connection.release();
console.log('Database is connected !');
return;
}
});
bd.query = promisify(bd.query);
module.exports = bd;
common.js
const { bd } = require('../database');
const helper_functions = {}
helper_functions.validateSignUp = (fullname, email, username, password, password_repeat) => {
if (fullname === '' || email === '' || username === '' || password === '' || password_repeat === '') {
return 'All the fields had to be completed!';
}
if (!(password.length >= 8 && (/\d/g.test(password) && (/[A-Z]/.test(password)))) ) {
return 'The password needs to contain at least one capital letter, a number and 8 digits!';
}
if(password != password_repeat) {
return 'Both passwords had to be the same!';
}
return 'Validated!';
}
helper_functions.checkRepeatedUserEmail = async (email) => {
const user = await bd.query('SELECT * FROM users WHERE email = ?', [email]);
if (user.length) {
return 'This email is used, please change it!';
} else {
return 'Validated!';
}
}
module.exports = helper_functions;
错误说下一段文字:
(node:14616) UnhandledPromiseRejectionWarning: TypeError: Cannot read
property 'query' of undefined
at Object.helper_functions.checkRepeatedUserEmail (proyect_path/src/lib/common.js:19:27) ..................
(node:14616) UnhandledPromiseRejectionWarning: Unhandled promise
rejection. This error originated either by throwing inside of an async
function without a catch block, or by rejecting a promise which was
not handled with .catch(). To terminate the node process on unhandled
promise rejection, use the CLI flag --unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode).
(rejection id: 2) (node:14616) [DEP0018] DeprecationWarning: Unhandled
promise rejections are deprecated. In the future, promise rejections
that are not handled will terminate the Node.js process with a
non-zero exit code.
有人知道发生了什么事吗??
感谢阅读!
错误提示 db is not defined in common.js file 可能是你做错了 require('../database');该要求声明中存在错误。
使用调试器在该点停止并查看是否在该点获取数据库。
您将数据库公开为 database.js
中的默认导出:
module.exports = bd;
但是您正在导入它,就好像它是用名称 db
:
导出的一样
const { bd } = require('../database');
要么将 database.js
中的导出更改为:
module.exports = {
bd: bd
};
或在 common.js
文件中将其导入为:
const bd = require('../database');
我正在使用 express 为带有 nodeJS 的服务器开发一个网页。我在注册页面上,我正在尝试验证用户插入的数据,但是当我进行查询时出现错误。
auth.js
const express = require('express');
const router = express.Router();
const { bd } = require('../database');
const help_functions = require('../lib/common');
router.post('/signup', async (req,res) => {
const fullname = req.body['fullname'];
const email = req.body['email'];
const username = req.body['username'];
const password = req.body['password'];
const password_repeat = req.body['password_repeat'];
var validation_msg = help_functions.validateSignUp(fullname, email, username, password, password_repeat);
validation_msg = await help_functions.checkRepeatedUserEmail(email);
});
database.js
const mysql = require('mysql');
const { promisify } = require('util');
const database = { // Database credentials }
const bd = mysql.createPool(database);
bd.getConnection((err,connection) => {
if (err) {
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
console.error('Database connection failed !');
}
if (err.code === 'ER_CON_COUNT_ERROR') {
console.error('Database has too many connections !');
}
if (err.code === 'ECONNREFUSED') {
console.error('Database connection was refused !');
}
}
if (connection) {
connection.release();
console.log('Database is connected !');
return;
}
});
bd.query = promisify(bd.query);
module.exports = bd;
common.js
const { bd } = require('../database');
const helper_functions = {}
helper_functions.validateSignUp = (fullname, email, username, password, password_repeat) => {
if (fullname === '' || email === '' || username === '' || password === '' || password_repeat === '') {
return 'All the fields had to be completed!';
}
if (!(password.length >= 8 && (/\d/g.test(password) && (/[A-Z]/.test(password)))) ) {
return 'The password needs to contain at least one capital letter, a number and 8 digits!';
}
if(password != password_repeat) {
return 'Both passwords had to be the same!';
}
return 'Validated!';
}
helper_functions.checkRepeatedUserEmail = async (email) => {
const user = await bd.query('SELECT * FROM users WHERE email = ?', [email]);
if (user.length) {
return 'This email is used, please change it!';
} else {
return 'Validated!';
}
}
module.exports = helper_functions;
错误说下一段文字:
(node:14616) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'query' of undefined at Object.helper_functions.checkRepeatedUserEmail (proyect_path/src/lib/common.js:19:27) ..................
(node:14616) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag
--unhandled-rejections=strict
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2) (node:14616) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
有人知道发生了什么事吗?? 感谢阅读!
错误提示 db is not defined in common.js file 可能是你做错了 require('../database');该要求声明中存在错误。 使用调试器在该点停止并查看是否在该点获取数据库。
您将数据库公开为 database.js
中的默认导出:
module.exports = bd;
但是您正在导入它,就好像它是用名称 db
:
const { bd } = require('../database');
要么将 database.js
中的导出更改为:
module.exports = {
bd: bd
};
或在 common.js
文件中将其导入为:
const bd = require('../database');