Meteor 권한설정 에러

0

서버에서 어드민 권한으로 작업해야 합니다
11:04
여기서 이제 메서드 콜로 요청을 하고 서버에서 그걸 받아서 해당 작업을 수행해야 하는데

<상황>

데이터 삭제기능...
서버에서 거부해서 삭제가 안됩니다ㅠ

🚨 에러메세지
allow-deny.js:512 Uncaught errorClass {isClientSafe: true, error: 403, reason: 'Not permitted. Untrusted code may only remove documents by ID.', details: undefined, message: 'Not permitted. Untrusted code may only remove documents by ID. [403]', …}

🚀
Meteor에서 제공하는 accounts, Meteor.userId api에서 client에서 접근하지 못하도록 하는 상황입니다. 보면 rmove로 데이터를 지우는 작업은 못하도록 된거같습니다. 아마도 update도 안될거같습니다.

아무래도 서버나 api에서 이런 형식으로 클라이언트에서 db를 접근하지 못하는 양식같습니다

const { Posts } = require("/imports/api/PostCollection");

Posts.deny({
  insert() {
    return true;
  },
  update() {
    return true;
  },
  remove() {
    return true;
  },
});

"🚨 어떻게 해야할까요?"

Meteor.users.allow({
  update: function(userId, user){

    return true;
  },
  insert: function(userId, user){ /* same as above*/ }
});

Meteor에 allow라는 메서드를 사용하여야 합니다.

var doc = MyCollection.findOne({ someName: someValue });
MyCollection.update({ _id: doc._id }, {$set:{something:true}});

이렇게 update를 할때는 id를 따로 넣어서 데이터를 find하는 방법도 있습니다!

https://docs.meteor.com/api/collections.html
공식문서에서 collections파트에 allow, deny부분을 참조하는 방법이 현명해보입니다 !!

회고

"문제해결 능력을 키우는 방법은 확실히 에러와 문제를 인지하는 것이다"

0개의 댓글