Почему функция asyn c в node js скрывает все данные вместо указанных? - PullRequest
0 голосов
/ 30 мая 2020
userSchema.methods.toJSON = async function(){
    const user = this
    const userObject = user.toObject()
    delete userObject.password
    delete userObject.tokens
    return userObject
}

но когда я использую нормальную функцию, она работает нормально

userSchema.methods.toJSON = async function(){
    const user = this
    const userObject = user.toObject()
    delete userObject.password
    delete userObject.tokens
    return userObject
}

Я не понимаю, в чем причина. Буду признателен узнать об этом!

1 Ответ

0 голосов
/ 30 мая 2020

это потому, что когда вы определяете функцию, как вы это сделали:

userSchema.methods.toJSON = function(){
  const user = this
  const userObject = user.toObject()
  delete userObject.password
  delete userObject.tokens
  return userObject
}

//..and then call

userSchema.methods.toJSON();

и вызываете функцию, ожидаемый результат будет userObject. Однако, если вы добавите синтаксис async к функции, возвращением функции будет объект Promise с userObject в качестве разрешения объекта Promise.

Итак, если вы хотите чтобы получить userObject:

userSchema.methods.toJSON = async function(){
  const user = this
  const userObject = user.toObject()
  delete userObject.password
  delete userObject.tokens
  return userObject
}

// And if you want to access your user object, you do this...

userSchema.methods.toJSON().then(function(userObject) {
  //...work with user object here
  console.log(userObject);
  //...
});

проверьте это, чтобы узнать больше https://www.positronx.io/angular-8-es-6-typescript-promises-examples/

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