NodeJS 创建团队时应用写入无效角色

pkln4tw6  于 2023-01-25  发布在  Node.js
关注(0)|答案(1)|浏览(160)

当我使用node-appwrite包在appwrite上创建一个团队时,我得到了一个Invalid roles响应。

import Sdk, { Permission, Role } from 'node-appwrite'

const client = new Sdk.Client()

client
    .setEndpoint(process.env.SERVER_URI)
    .setProject(process.env.PROJECT_ID)
    .setKey(process.env.SERVER_API_KEY)

const teams = new Sdk.Teams(client)

await teams.create('comics', 'Comics and Superheroes', [
    Permission.read(Role.users()),
    Permission.update(Role.team('admin')),
    Permission.delete(Role.team('admin'))
])

以下是来自请求的错误响应。

{
  code: 400,
  type: 'general_argument_invalid',
  response: {
    message: "Invalid roles: Value must a valid array and Parameter must contain at most 36 chars. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char",
    code: 400,
    type: 'general_argument_invalid',
    version: '1.2.0'
  }
}

如果我只记录传递给服务器的权限,则结果如下

[ 'read("users")', 'update("team:admin")', 'delete("team:admin")' ]

我相信问题是因为字符串中存在分号和括号。我该如何解决这个问题,还是我遗漏了什么?

gstyhher

gstyhher1#

teams.create()roles参数接受一个字符串数组,这些字符串应该是团队中的可用角色。在您的示例中,您需要2个角色:1个用于管理员(应该是所有者),另一个用于普通成员。因此,调用可能应该是:

await teams.create('comics', 'Comics and Superheroes', [
    'member',
    'owner'
])

Permission.read(Role.team('comics'))Permission.update(Role.team('comics', 'owner'))Permission.delete(Role.team('comics', 'owner'))权限可在以后设置集合、文档、存储桶或文件的权限时使用。

相关问题