我在AWS上使用Parse Server并且一直很顺利。但是我无法像在parse.com云代码中那样分配ACL。
我已阅读The Compatibility Notes,Docs和Git Read me,但很少提及ACL。
以下answer已经尝试过,但它对我不起作用。
我的旧代码是这样的:
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();
});
显然Parse.User.current()
不能用来引导我这个:
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();
});
然而,这对我不起作用。
我还尝试在使用以下内容的同时设置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文档:
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 :(得分: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});
});