gpt4 book ai didi

Javascript - 从专家返回 undefined object 数组 - NodeJS

转载 作者:行者123 更新时间:2023-12-03 04:59:47 24 4
gpt4 key购买 nike

在我的节点 JS 服务器上,我有我的模块文件。我的模块文件连接到数据库并提取行列表。我正在导出一个返回对象数组的函数。基本上我希望返回从数据库获得的信息并将其传递回我的主脚本以对其执行某些操作。

这就是我的模块脚本的样子

-- mymodule.js --

function smsdcontact(fname, lname, smsdcell, smsdemail) {
this.fname = fname;
this.lname = lname;
this.smsdcell = smsdcell;
this.smsdemail = smsdemail;
}

var smsdgetlist = function (smsdgroupid) {


var smsdlist = [];

connection.connect();
connection.query('SELECT * from mymembers', function(err, rows, fields) {
if (!err) {
console.log('The number of rows found are: ', rows.length);
for (i = 0; i < rows.length; i++) {
smsdlist.push (new smsdcontact(rows[i].memfname,rows[i].memlname,rows[i].memcell,rows[i].mememail));
}
connection.end();
console.log(smsdlist);
return smsdlist;
}
else
console.log('Error while performing Query.'+err);
});
}

exports.smsdgetlist = smsdgetlist;'

我的主要脚本看起来像这样

-- main.js --

var test = require("./smsdsql.js");
var returnedarray = test.smsdgetlist("0");
console.log(returnedarray)

输出看起来像这样

-- 输出--

C:\node main.js
undefined
The number of rows found are: 2
[ smsdcontact {
fname: ‘user 1 first name',
lname: ‘use 1 last name',
smsdcell: ‘user 1 cell phone',
smsdemail: ‘user 1 email },
smsdcontact {
fname: 'user 2 first name'',
lname: 'user 2 last name',
smsdcell: 'user 2 cell phone',
smsdemail: ‘user 2 email' } ]

所以问题是,听起来返回未定义

最佳答案

编辑

Wait until fs.readFileSync is done 的重复项- 完全相同的逻辑。

<小时/>

您正在执行异步操作,因此不能仅将其结果分配给变量。您可以做的是将回调参数(这将是一个函数)添加到 smsdgetlist 函数并使用结果调用它,这将是smsdlist 在您的情况下

function smsdgetlist(smsdgroupid, callback){
connection.connect();
connection.query(query, function(err, rows, fields){
for (i = 0; i < rows.length; i++) {
smsdlist.push (new smsdcontact(rows[i].memfname,rows[i].memlname,rows[i].memcell,rows[i].mememail));
}
// after pushing all elements to desired variable, use the callback
connection.end();
callback(smsdlist);
});
}

您将在 main.js 中执行的操作是

var test = require("./smsdsql.js");
test.smsdgetlist("0", function(result){
console.log(result); // here you would obtain the smsdlist array from smsdgetlist function
});

关于Javascript - 从专家返回 undefined object 数组 - NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42281137/

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