Как обновить пользовательский объект в back4app? - PullRequest
0 голосов
/ 01 октября 2019

Я использую Node.js и back4app.com

Я пытаюсь обновить объект пользователя. Поэтому я много читал и нашел эту перспективную документацию :

let progressId = "xyz";
let userId = "12354"; //aka objectId
const User = new Parse.User();
const query = new Parse.Query(User);


// Finds the user by its ID
query.get(userId).then((user) => {
    // Updates the data we want
    user.set('progressId', progressId);
   // Saves the user with the updated data
   user.save()
       .then((response) => {
           console.log('Updated user', response);
       })
       .catch((error) => {
           console.error('Error while updating user', error);
       });
   });

Но есть и предупреждение. В нем говорится:

Класс Parse.User защищен по умолчанию, вы не можете вызвать метод save, если Parse.User не был получен с использованием аутентифицированного метода, такого как logIn, signUp или current

Как бы это выглядело в коде?

Мое решение

Ну, я получил его на работу. Пока я разобрался, я нашел несколько маленьких выставочных пробок. Я перечисляю это для всех, кого это может касаться.

Спасибо @RamosCharles. Я добавил Мастер Ключ в Parse._initialize. Только с этим .save (null, {useMasterKey: true}) работает. Обратите внимание, без нуля это также не будет работать.

Это мой рабочий код:

let progressId = "xyz";
const User = Parse.Object.extend('User'); //instead of const User = new Parse.User();
const query = new Parse.Query(User);

query.equalTo("objectId", '123xyz');
query.get(userId).then((userObj) => {
    // Updates the data we want
    userObj.set('progressId', progressId);

    // Saves the user with the updated data
    userObj.save(null, {useMasterKey: true}).then((response) => {
        console.log('Updated user', response);
    }).catch((error) => {
        console.error('Error while updating user', error);
    });
});

Теперь мне интересно

  • почемумой рабочий код отличается от документации ?

  • Насколько безопасен мой код? И что нужно сделать, чтобы сделать его более безопасным?

1 Ответ

0 голосов
/ 02 октября 2019

Да, их Справочник по API очень полезен! В этом разделе есть кнопка «попробовать на JSFiddle», вы уже видели это?

Чтобы обновить объект пользователя, вы должны использовать мастер-ключ. На веб-интерфейсе это не рекомендуется, и лучше создать функцию облачного кода и вызвать ее на своем веб-интерфейсе. Однако для целей тестирования вы можете продолжать использовать Справочник API, но в JSFiddle вам нужно внести некоторые изменения, вот их пример кода, но с настройками:

Parse.serverURL = 'https://parseapi.back4app.com';
Parse._initialize('<your-appID-here>', '<your-JSKey-here>', '<Your-MasterKey-here>');

const MyCustomClass = Parse.Object.extend('User');
const query = new Parse.Query(MyCustomClass);

query.equalTo("objectId", "<object-ID-here>");
query.find({useMasterKey: true}).then((results) => {

  if (typeof document !== 'undefined') document.write(`ParseObjects found: ${JSON.stringify(results)}`);
  console.log('ParseObjects found:', results);
}, (error) => {
  if (typeof document !== 'undefined') document.write(`Error while fetching ParseObjects: ${JSON.stringify(error)}`);

  console.error('Error while fetching ParseObjects', error);
});

Вам потребуетсявставьте «_» перед «initialize» в вашем «Parse._initialize» и вставьте мастер-ключ в ваш запрос, как я это сделал на query.find.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...