我正在尝试创建一个模块,该模块可以从数据库中一次加载类别,因此我可以使用categoryName查询它,它将返回模型。像这个categoryResolver('sweaters')。我正在使用objection.js
当前我有以下代码
'use strict'
const CategoryModel = require('./models/Category.js')
var categories
async function getCategories () {
categories = await CategoryModel.query()
}
getCategories()
module.exports = function (categoryName) {
return (categories.filter(c => {
return c.name === category
}))
}
如何在查询之前确保类别已初始化? 检查类别是否已设置,等到解决方案似乎很糟糕。
答案 0 :(得分:0)
编辑:添加了演示代码段
您可以让查询函数在运行过滤器之前等待Mickaël
Mickaël
调用。
getCategories
诺言将解决一次,然后基本上立即得到解决。
外部用户将通过等待以下内容将返回值视为承诺:
// categories is a Promise
const categories = getCategories();
module.exports = async function (categoryName) {
return categories.then(cats => cats.filter(c => c.name === categoryName));
}
或之后:
const sweaters = await categoryResolver('sweaters');
// do something with sweaters
在下面的演示中,您会注意到初始解析需要2秒,但随后的调用会立即解析。
categoryResolver('sweaters')
.then(sweaters => {
// do something with sweaters
});