gpt4 book ai didi

javascript - Sequelize 不返回函数内的值

转载 作者:行者123 更新时间:2023-11-30 20:37:37 27 4
gpt4 key购买 nike

我正在使用 Sequelize 从 Node.js 连接到 Azure SQL 数据库。 sequelize 查询模块放在一个函数中,匹配的 bool 变量返回给主脚本(app.js)。

Sequelize 和函数是 (app_functions.js) 的一部分

代码片段粘贴在下面:

app_functions.js

function loginIds(email_id) {
var is_matched = false;

sequelize.query("SELECT emailid FROM user_data where emailid='" + email_id + "'", {
type: sequelize.QueryTypes.SELECT
})
.then(result => {
console.log(result);
console.log('DB email id is: ' + result[0].emailid);

if (result[0].emailid != '') {
console.log('True block');
is_matched = true;
} else {
is_matched = false;
}
})

return is_matched;
}

app.js

// Import app_functions.js
var fs = require('fs');
eval(fs.readFileSync('app_functions.js').toString());

console.log("Matched value is: "+ loginIds('xyz@gmail.com'));

输出

Matched value is: false
Executing (default): SELECT emailid FROM user_data where emailid='xyz@gmail.com'
[ { emailid: 'xyz@gmail.com' } ]
DB email id is: xyz@gmail.com
True block

函数返回false,尽管True block ,在if 条件下被执行。另外需要注意的是,函数是先返回值再执行定义。

如何从包含 sequelize 的函数返回正确的 true 值?

最佳答案

尝试从 loginIds 返回一个 promise,然后 .thenapp.js 中返回一个 promise:

function loginIds(email_id) {
var is_matched = false;
return new Promise((resolve, reject) => {
sequelize.query("SELECT emailid FROM user_data where emailid='" + email_id + "'", {
type: sequelize.QueryTypes.SELECT
})
.then(result => {
console.log(result);
console.log('DB email id is: ' + result[0].emailid);

if (result[0].emailid != '') {
console.log('True block');
is_matched = true;
} else {
is_matched = false;
}
resolve(is_matched);
})
}) // Closing of Promise block
}

应用程序.js:

loginIds('xyz@gmail.com')
.then((match) => {
console.log("Matched value is: "+ match);
});

关于javascript - Sequelize 不返回函数内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49643512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com