我找到了答案。在Strapi v4的插件中查询模型如下:
我正试图将我的应用程序从Strapi v3升级到v4,查询插件的模型似乎发生了重大变化。
这行代码(适用于v3(:
const publicRole = await strapi
.query("role", "users-permissions")
.findOne({ type: "public" });
产生以下错误:;错误:找不到模型角色";
这是完整的代码:
async function setPublicPermissions(strapi, newPermissions) {
// Find the ID of the public role
const publicRole = await strapi
.query("role", "users-permissions")
.findOne({ type: "public" }); <---- produces Error: Model role not found
// List all available permissions
const publicPermissions = await strapi
.query("permission", "users-permissions")
.find({ type: "application", role: publicRole.id });
// Update permission to match new config
const controllersToUpdate = Object.keys(newPermissions);
console.log({ controllersToUpdate });
const updatePromises = publicPermissions
.filter((permission) => {
// Only update permissions included in newConfig
if (!controllersToUpdate.includes(permission.controller)) {
return false;
}
if (!newPermissions[permission.controller].includes(permission.action)) {
return false;
}
return true;
})
.map((permission) => {
// Enable the selected permissions
return strapi
.query("permission", "users-permissions")
.update({ id: permission.id }, { enabled: true });
});
await Promise.all(updatePromises);
}
有没有一种新的方法可以在版本4中查询插件模型来实现这一点?
const publicRole = await strapi
.query("plugin::users-permissions.role")
.findOne({
where: {
type: "public",
},
});
在尝试了很多之后,我使用了在/src/api/user-input/controllers/user-input.js
文件作为createCoreController()
函数的自变量
module.exports = createCoreController('api::user-input.user-input');
它起作用了!