使用类将所有数据存储在对象中[重复]
Posted
技术标签:
【中文标题】使用类将所有数据存储在对象中[重复]【英文标题】:Using Class to store all data in a object [duplicate] 【发布时间】:2019-07-08 02:54:10 【问题描述】:我使用了一个类来获取所有数据以存储在一个对象中。但是成功运行后对象未定义,似乎数据存储在对象(Alloptions)中。
我已经尝试过,但找不到合适的方法
router.get('/:category', (req, res) =>
let AllOptions;
let cat4;
AllOptions = new GetAllOptions(); //show undefined
let category = req.params.category.replace(/-/g, ' ')
console.log(AllOptions)
for (i = 0; i < AllOptions.categories.length; i++)
console.log(AllOptions.categories[i].categoryName.replace(/-/g, ' ').toLowerCase())
console.log(category)
if (AllOptions.categories[i].categoryName.replace(/-/g, ' ').toLowerCase() == category)
cat4 = AllOptions.categories[i].categoryId - 1
)
类对象
class GetAllOptions
constructor()
this.categories = ;
this.languages = ;
this.getJobCategories();
async getJobCategories()
await Category.getAllCategories((err, response) =>
if (err)
//?? how error flash dont know
return res.json(
error: ERROR_MSG,
);
if (response.length > 0)
for (let i = 0; i < response.length; i++)
this.categories[response[i].categoryId] =
response[i];
for (let i = 0; i < response.length; i++)
this.categoriesNames[response[i].categoryName] =
response[i];
)
this.getJobLanguages();
async getJobLanguages()
await Category.getAllLanguages((err, response) =>
if (err)
//?? how error flash dont know
return res.json(
error: ERROR_MSG,
);
if (response)
for (let i = 0; i < response.length; i++)
this.languages[response[i].languageId] =
response[i];
console.log(this.languages[response[i].languageId])
for (let i = 0; i < response.length; i++)
this.languagesNames[response[i].languageName] =
response[i];
)
我想等到类运行完成并获取所有数据,但这里显示未定义
【问题讨论】:
如here 所述,您不能拥有异步构造函数。您可以创建一个进行异步调用的 init 函数。 您正在使用await
语法和callback style function
,我认为,只需使用样式async/await
或callback
。
【参考方案1】:
您可以异步构造 GetAllOptions
对象:
constructor (async_param)
if (typeof async_param === 'undefined')
throw new Error('Cannot be called directly');
static async build ()
var async_result = await getJobCategories()();
return new myClass(async_result);
【讨论】:
以上是关于使用类将所有数据存储在对象中[重复]的主要内容,如果未能解决你的问题,请参考以下文章
说明在创建数据库时如何合理规划数据库的物理存储结构和逻辑存储结构