2

クラスで DataObjects をクエリしようとしています。Data Object - Listドキュメントの下部にある「試してみる」フォームを使用していますが、403「この操作を実行する権限がありません」という応答が表示されます。

API キー、インスタンス名を提供しています。単純なクエリとクエリなしで試しました。

クラスの「その他」の権限を確認しましたが、「読み取り」に設定されています。クラス内の唯一の DataObject に対する「その他」の権限も同様です。

次のようなuserKeyを含めるためにJavascriptを介して試しました:

var Syncano = require("syncano")
var conn = Syncano({ apiKey: config.apiKey })
var DataObject = conn.DataObject

app.use("/:un", function(inReq, inResp, inNext)
{
    var list =
    {
        instanceName: config.instance,
        userKey: inResp.locals.userKey,
        className: "member",
    }
    var query =
    {
        path: inReq.params.un
    }

    DataObject.please()
        .list(list)
        .filter(query)
        .then(function(inResult)
    {
        sLogger.info("Result: " + JSON.stringify(inResult))
        inResp.render("user")
    })
    .catch(function(inError)
    {
        sLogger.error("Failed to get user: ", inError)
    })
})

しかし、それでも403「このアクションを実行する権限がありません」が表示されます。

解決:

解決策 (@mariusz-wiśniewski に感謝) は、apiKey と userKey を Syncano() コンストラクターに渡すことです。

var Syncano = require("syncano")

app.use("/:un", function(inReq, inResp, inNext)
{
    var conn = Syncano({ apiKey: config.apiKey, userKey: inResp.locals.userKey })
    var DataObject = conn.DataObject
    var list =
    {
        instanceName: config.instance,
        className: "member",
    }
    var query =
    {
        path: inReq.params.un
    }

    DataObject.please()
        .list(list)
        .filter(query)
        .then(function(inResult)
    {
        sLogger.info("Result: " + JSON.stringify(inResult))
        inResp.render("user")
    })
    .catch(function(inError)
    {
        sLogger.error("Failed to get user: ", inError)
    })
})
4

1 に答える 1