gpt4 book ai didi

javascript - 使用 node express 从类渲染方法

转载 作者:搜寻专家 更新时间:2023-10-31 23:50:05 24 4
gpt4 key购买 nike

我有一个带有方法的类,它应该给我一个 API 的域。到目前为止,这也有效。但是如果我想用 Node Express 渲染它,我会得到一个 1.2.3 的数组。没有域名。

我认为我的问题出在 async await 上?!

这是我的类方法的一个片段:

class ISPConfig {
constructor(base_url, options) {
this.base_url = base_url;
this.options = options;
}

async _call() {
... // gives me the sessionId
}

async getDataByPrimaryId(ispFunction, param) {
try {
const results = await axios.post(this.base_url + ispFunction, {
session_id: await this._call(),
primary_id: param
});
return await results.data.response;
//console.log(results.data.response);
} catch (err){
console.log(err);
}
}

还有她来 self 的 app.js 的一个片段:

const renderHome = (req, res) => {
let domains = [],
message = '';
let a = new ispwrapper.ISPConfig(BASE_URL, OPTIONS)
a.getDataByPrimaryId('sites_web_domain_get', { active: 'y' })
.then(response => {
for (let i = 0; i < response.length; i++){
domains = response[i]['domain'].domains;
}
})
.catch(err => {
message = 'Error when retriving domains from ISPApi';
})
.then(() => {
res.render('home', { // 'home' template file for output render
title: 'ISPConfig',
heading: 'Welcome to my ISPConfig Dashboard',
homeActive: true,
domains,
message
});
});
};

使用 push(domains) 我只能进入 HTML 页面 1.2.3。

这与我的 API 的三个事件域完全对应。但只是没有域名。 :(

但是如果我在 for loop console.log(response[i]['domain'].domains) 中输出,我会在控制台中获得所有具有名称的域。

有人看到我的错误吗?

这是我的解决方案:

const renderHome = async (req, res) => {
let domain = [],
message = '';
try {
let a = new ispwrapper.ISPConfig(BASE_URL, OPTIONS);
const response = await a.getDataByPrimaryId('sites_web_domain_get', { active: 'y' });

for (let i = 0; i < response.length; i++){
domain.push(response[i].domain);
}
} catch(err) {
message = 'Error when retriving domains from ISPApi';
} finally {
res.render('home', { // 'home' template file for output render
title: 'ISPConfig',
heading: 'Welcome to my ISPConfig Dashboard',
homeActive: true,
domain,
message
});
}

};

最佳答案

尝试让你的路线异步:

const renderHome = async (req, res) => {
let domains = [],
message = '';
try {
let a = new ispwrapper.ISPConfig(BASE_URL, OPTIONS)
const response = await a.getDataByPrimaryId('sites_web_domain_get', { active: 'y' })

for (let i = 0; i < response.length; i++){
domains.push(response[i].domain);
}
} catch(err) {
message = 'Error when retriving domains from ISPApi';
} finally {
res.render('home', { // 'home' template file for output render
title: 'ISPConfig',
heading: 'Welcome to my ISPConfig Dashboard',
homeActive: true,
domains,
message
});
}
};

关于javascript - 使用 node express 从类渲染方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55779116/

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