クラスで 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)
})
})