我试图注册用户并将其添加到数据库中,但是当我调用registerUser函数时,会引发错误。
我已仔细阅读this article,以了解导致此错误的原因,并在此处搜索了几篇文章。
我觉得我需要另一只眼睛来帮助发现我在做错什么
这是调用注册用户功能的代码 (“数据”是一个对象,是从注册表单中清除的输入)
const db = require('./database');
const bcrypt = require('bcrypt');
const saltRounds = 10;
function hasher(data){
bcrypt.hash(data.password, saltRounds)
.then(function(hash) {
data.password = hash;
db.registerUser(data);
})
.catch(e => console.error(e));
}
如果我在registerUser之前调用console.log(db),则heroku在日志中显示“ {}”
这是来自database.js的注册用户功能:
const { Client } = require('pg');
const hasher = require('../models/hash')
const client = new Client({
connectionString: process.env.DATABASE_URL,
ssl: true,
});
client.connect()
function registerUser(data) {
const query = "INSERT INTO users (user_id, first_name, last_name, email, username, hash_pass) VALUES(DEFAULT, $1, $2, $3, $4, $5)";
const values = [data.first, data.last, data.email, data.username, data.password];
client.query(query, values)
.then(res => console.log("stored: " + res.rows[0] + "in db"))
.catch(e => console.error(e.stack));
}
module.exports = {
registerUser : registerUser
};
我收到“ TypeError:db.registerUser不是函数”
答案 0 :(得分:0)
我想的问题是您正在将const hasher = require('../models/hash')
导入database.js
并将const db = require('./database');
导入哈希器。
这种循环依赖关系可能会导致问题。
您的出口很好。
答案 1 :(得分:0)
据我所知registerUser
是一个独立的函数,而不是db
对象的方法。
我还可以看到module.exports = { registerUser : registerUser };
指令-但这并未提示将其导出到什么位置或导出到什么位置。
我建议您尝试将registerUser(data);
作为一个独立的声明,看看会发生什么,因为显然它并没有成为db
的一种方法-在加载期间请注意控制台中是否有任何错误消息...
祝你好运