我正在尝试建立一个函数,允许用户从数据库中检索数据,但以动态的方式。因此,允许他们指定源表,以及哪些列,他们想检索。
我已经构建了允许他们选择表和列的部分,这些用户只能访问我们乐意让他们检索的数据。
我想让它尽可能的动态,所以我创建了一个函数来帮助我实现这一点,但到目前为止我遇到了一个问题,我有这个函数:
const modelMap = (model, action, criteria, options) => {
const models = {
EXTERNAL_USER: {
READ: services.externalUser.readExternalUser(criteria, options),
},
TASK: {
READ: services.task.readTask(criteria, options),
},
USER: {
READ: services.user.readUser(criteria, options),
},
}
return models[model][action]
}
例如,我调用这个函数modelMap('EXTERNAL_USER', 'READ', { id: userID }, { populates: ['documents'] })
.
这将返回我想要的数据,但是我在终端中得到一个'OperationError':
OperationalError [UsageError]: Invalid populate(s).
Details:
Could not populate `documents`. There is no attribute named `documents` defined in this model.
这个错误是说Task
模型没有documents
属性,而实际上它没有,所以我猜即使我没有试图访问readTask
函数,它还是被调用了,我该如何解决这个问题呢?
- 解决方案**
我将models
对象更改为以下内容:
const models = {
EXTERNAL_USER: {
READ: () => services.externalUser.readExternalUsers(criteria, options),
},
TASK: {
READ: () => services.task.readTask(criteria, options),
},
USER: {
READ: () => services.user.readUser(criteria, options),
},
}
然后我可以使用await modelMap(model, action, criteria, options)()
来获取所需的数据。
1条答案
按热度按时间xoefb8l81#
是的。无论如何调用的函数