Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript未分配给变量_Javascript_Node.js_Postgresql - Fatal编程技术网

Javascript未分配给变量

Javascript未分配给变量,javascript,node.js,postgresql,Javascript,Node.js,Postgresql,我正在Node.js中编写一个基本的用户创建系统,我想知道createUser函数的结果是什么。代码本身运行良好,新用户被发布,已经存在的用户被停止。我想向最终用户展示这一点,所以我设置了一个变量来返回一个表示结果的数值 问题是,该值从未分配给。最终的控制台日志总是读取未定义的,即使出现我的其他日志语句。我觉得这更像是一个JavaScript语法问题,但我被难住了 User.prototype.createUser = function () { console.log('Begin c

我正在Node.js中编写一个基本的用户创建系统,我想知道createUser函数的结果是什么。代码本身运行良好,新用户被发布,已经存在的用户被停止。我想向最终用户展示这一点,所以我设置了一个变量来返回一个表示结果的数值

问题是,该值从未分配给。最终的控制台日志总是读取未定义的,即使出现我的其他日志语句。我觉得这更像是一个JavaScript语法问题,但我被难住了

User.prototype.createUser = function () {
    console.log('Begin createUser...');
    var email = this.email;
    var wasUserCreated;  <------- variable to assign
    pg.connect(process.env.DATABASE_URL, function (err, client) {
        if (err) {
            console.log(err.message, err.stack);
            wasUserCreated = 0; <------assigning to variable?
        }
        else {
            var query = client.query('SELECT email FROM users WHERE email=$1', [email], 
            function (err, results) {
                if (results.rows.length > 0) {
                    console.log('That email address has already been registered!');
                    wasUserCreated = 1; <------assigning to variable?

                }
                else {
                    console.log('Email address not found, inserting new account');
                    insertNewUser();
                    wasUserCreated = 2; <------assigning to variable?

                }
            });
        }
    });
    console.log("wasUserCreated: " + wasUserCreated); <------always reads 'undefined'

    return wasUserCreated;
};
User.prototype.createUser=函数(){
log('begincreateuser…');
var email=this.email;

var wasUserCreated;这是由于您的查询是异步的-您的createUser方法应该做的是将回调作为参数,并调用cb(err,wasUserCreated,user)或回调中的某些内容来执行查询

您的console.log始终未定义,因为它是同步激发的

pg.connect的第二个参数是一个回调函数,它异步运行…因此该函数在修改WASUERCREATED之前返回

Asynchronous.unchronous,但我不想对本质上是布尔值的函数使用数值。