2016-05-08 3 views
0

AWSで構文解析サーバーを使用しており、うまくいきました。しかし、私はparse.comクラウドコードのようにACLを割り当てることができません。構文解析サーバーのACLを設定する

私はThe Compatibility NotesDocsおよびGit Read meと読みましたが、ACLの記載はほとんどありません。

以下のanswerが試されていますが、私にとっては効果がありません。

私の古いコードは次のようにしたが、これは私のために働いていない

Parse.Cloud.beforeSave("Favourites", function(request, res) { 

    var acl = new Parse.ACL(); 
    acl.setReadAccess(request.object.id, true); 
    acl.setWriteAccess(request.object.id, true); 
    request.object.setACL(acl); 
    res.success(); 

}); 

:これに私をもたらした明らかParse.User.current()を使用することはできません

Parse.Cloud.afterSave("Favourites", function(request) { 
    var user = request.user; 
    var newACL = new Parse.ACL(Parse.User.current()) 
    newACL.setReadAccess(user, true); 
    newACL.setWriteAccess(user, true); 
    request.object.setACL(newACL); 
    request.object.save(); 
}); 

私はまた、以下の方法で保存するのと同時にACLを設定しようとしましたが、それでもまだ動作しません。

var favourites = new Favourites(); 

var acl = new Parse.ACL(); 
acl.setReadAccess('request.object.id', true); 
acl.setWriteAccess('request.object.id', true); 
favourites.setACL(acl); 

favourites.save({ 
    user: request.user, 
    favourites: request.params.favourites 
}, { 
    success: function(favourites) { 
     console.log('Great!') 
    }, 
    error: function(favourites, error) { 
     console.log('The save failed'); 
    } 
}); 

私はJavascriptのドキュメントを使用して物事を試してみましたEDIT

var favourites = new Favourites(); 

    var acl = new Parse.ACL(request.user); 
    acl.setReadAccess(request.user, true); 
    acl.setWriteAccess(request.user, true); 
    acl.setPublicWriteAccess(false); 
    acl.setPublicReadAccess(false); 
    favourites.setACL(acl); 
    favourites.set("favourites", request.params.favourites); 
    favourites.set("userId", request.user.id); 
    favourites.set("user", request.user); 
    favourites.save({}, { useMasterKey: true }); 

まだ動作しません!

Docsにnode.jsクラウドのコード例が深刻にないようです。

ご協力いただければ幸いです。

+0

Parse.User.current()を使用できないのはなぜですか?モバイルクライアント(iOS SDKを使用して作成)で作成されたオブジェクトに対してafterSave()を設定している場合、sdkはどのようにユーザーオブジェクトを渡しますか? – MayNotBe

+0

'Parse.User.current()'はParse ServerのnodeJSバージョンでは使用できません:http://blog.parse.com/learn/using-node-js-with-parse/ – Taylorsuk

+0

Thanks-btw、あなたのポストにリンクした答えは、私のためにヘロクで働いていました。なぜそれがあなたのために働かなかったのだろうか? – MayNotBe

答えて

0

これだけです。私はあなたが望むものが完全にはっきりしていないので、パブリックアクセスを拒否するアクセス権を追加しました。

Parse.Cloud.afterSave("Favourites", function(request) { 

    var newACL = new Parse.ACL(); 

    // Are you sure you don't need to disable public access? 
    newACL.setPublicReadAccess(false); 
    newACL.setPublicWriteAccess(false); 

    // Give access to user 
    newACL.setReadAccess(request.user, true); 
    newACL.setWriteAccess(request.user, true); 

    // Assign ACL to object 
    request.object.setACL(newACL); 

    // Use master key 
    request.object.save(null, {useMasterKey: true}); 
});