Javascript NestJS(NodeJS)client.query运行3次,结果为空
我只是潜入NestJS(和Promissions),当我使用一个Javascript NestJS(NodeJS)client.query运行3次,结果为空,javascript,node.js,nestjs,Javascript,Node.js,Nestjs,我只是潜入NestJS(和Promissions),当我使用一个客户端时,一切都正常运行。由于Postgres无法使用参数进行daisychain查询,因此我需要运行client.query0到n次,这是我试图通过一个简单的JS循环来完成的 我到处都搜索过,但找不到如何使用循环执行此操作(我可能在搜索错误的术语…) 其中1是数组的(正确)长度 最后一次返回的queryResult只是一个空数组,因为它是在循环运行之前返回的,我猜是因为它在循环之前显示--^。关于范围外/async的描述非常全面,
客户端时,一切都正常运行。由于Postgres无法使用参数进行daisychain查询,因此我需要运行client.query
0到n次,这是我试图通过一个简单的JS循环来完成的
我到处都搜索过,但找不到如何使用循环执行此操作(我可能在搜索错误的术语…)
其中1
是数组的(正确)长度
最后一次返回的queryResult
只是一个空数组,因为它是在循环运行之前返回的,我猜是因为它在循环之前显示--^。关于范围外/async的描述非常全面,但在这种特殊情况下,我不知道如何解决它。我读了所有这些
至于第二个问题,您可以通过以下方式使用async Wait执行多个异步调用:
getQueryResult({
queries,
database,
values = []
}: {
queries: string[];
database: string;
values?: string[];
}): Promise<any> {
// Connect to remote Postgres via local SSH tunnel
const pool = new Pool({
user: '',
host: 'localhost',
database: database,
password: '',
port: 63333
});
const queryResult = [];
return pool.connect().then(async (client) => {
try{
for (let i = 0; i < queries.length; i++) {
let res=await client.query(queries[i], values)
if(res){
client.release();
queryResult.push(res['rows']);
console.log('queryResult0', queryResult, queries.length);
}
}
console.log('queryResult', queryResult);
return queryResult;
}
catch(error){
return error;
}
});
}
getQueryResult({
询问,
数据库
值=[]
}: {
查询:字符串[];
数据库:字符串;
值?:字符串[];
}):承诺{
//通过本地SSH隧道连接到远程Postgres
常量池=新池({
用户:“”,
主机:“localhost”,
数据库:数据库,
密码:“”,
港口:63333
});
常量queryResult=[];
返回pool.connect().then(异步(客户端)=>{
试一试{
for(设i=0;i
对于第一个问题,我不太确定是什么导致了这种行为。尝试上述方法,看看第一个问题是否仍然存在。您还可以阅读本文,了解如何使用async Wait和promises-感谢@naveen chahar,您刚刚救了我一天:)改进结果的一个细节是执行返回queryResult[0]由于某种原因,结果是数组中的一个数组。不幸的是,它没有解决关于多个结果的第一个问题。忘记上一条评论中的这一点:改进结果的一个细节是执行return queryResult[0];由于某种原因,结果是数组中有一个数组。
每个查询都有一个对象数组!此语句“console.log('queryResult',queryResult')也记录了三次,还是仅此语句“console.log('queryResult0',queryResult,querys.length')?
queryResult []
queryResult0 [
[
{ ... correct results ... }
]
] 1
queryResult0 [
[
{ ... correct results ... }
]
] 1
queryResult0 [
[
{ ... correct results ... }
]
] 1
getQueryResult({
queries,
database,
values = []
}: {
queries: string[];
database: string;
values?: string[];
}): Promise<any> {
// Connect to remote Postgres via local SSH tunnel
const pool = new Pool({
user: '',
host: 'localhost',
database: database,
password: '',
port: 63333
});
const queryResult = [];
return pool.connect().then(async (client) => {
try{
for (let i = 0; i < queries.length; i++) {
let res=await client.query(queries[i], values)
if(res){
client.release();
queryResult.push(res['rows']);
console.log('queryResult0', queryResult, queries.length);
}
}
console.log('queryResult', queryResult);
return queryResult;
}
catch(error){
return error;
}
});
}