没有人吗?那么久了还是这样啊

服务器内部错误,如有疑问请从帮助菜单进入社区提交问题,内部错误代码: Y25QNBTg

你好,请粘贴一下相关的代码。

    var knowledge = await knowledgeQuery.get(request.params.id);
    var relation = knowledge.relation("tags");
    var tagList = await relation.query()
    relation.remove(tagList);

    await Promise.all(request.params.tags.map(async (value) => {
        var tagQuery = new AV.Query("Tag");
        …………
        var tag = await tagQuery.first();

        relation.add(tag);
    }));

    await knowledge.save()

那里不支持async/await,无法运行

App Id 是什么?最新的 save 报错是什么?大概时间段在什么时候?现在是否正常?

appid:Vmh5qHgdeVa6VGbHhsRLnS8s

刚刚再试了一次,仍然报错:
{"code":1,"error":"服务器内部错误,如有疑问请从帮助菜单进入社区提交问题,内部错误代码: 0tIy96iL"}

请问之前这个代码是可以的么?能否贴出具体的 http 请求信息?

额,一直不行

http请求:
{
"id": "571dd7e82e958a006b0c8457",
"tags": ["awesome"]
}

能否给出请求的全部代码?

请求用的是命令行工具,Json参数就是上面那些了

能不能通过浏览器发送请求,我们看一下具体的请求内容?

定义云函数的代码:

AV.Cloud.define('setKnowledgeTag', async function (request, response) {
    try {

        var knowledgeQuery = new AV.Query('Knowledge')

        var knowledge = await knowledgeQuery.get(request.params.id);
        var relation = knowledge.relation("tags");
        var tagList = await relation.query()
        relation.remove(tagList);

        await Promise.all(request.params.tags.map(async (value) => {
            var tagQuery = new AV.Query("Tag");
            tagQuery.equalTo("name", value)
            tagQuery.doesNotExist("belong")
            var tag = await tagQuery.first();

            if (!tag) {
                var tag = new Tag();
                tag.set("name", value)
                await tag.save();
            }
            relation.add(tag);

            console.log(relation);
        }));
        console.log("pre save")
        await knowledge.save()
        console.log("after save")
        response.success()

    } catch (e) {
        errorFn(response)(e)
    }
});

命令行工具:

你好,我注意到了你的这两行:

var tagList = await relation.query()
relation.remove(tagList);

按照我们文档( https://leancloud.cn/docs/js_guide.html#多对多关系2 )上的介绍,query() 返回的是一个 Query 对象,需要在其上调用 find() 才可以得到结果。

var tagList = await relation.query().find()
relation.remove(tagList);

非常感谢,问题解决!