Как хранить хешированные пароли в FireStore - PullRequest
0 голосов
/ 08 апреля 2020

поэтому я хочу сохранить пользовательский объект в firestore, я впервые работаю с firestore, поэтому я использую Bcrypt для кодирования пароля, чем сохраняю объект в firestore, но, похоже, он не может его сохранить

Это мой код

 * createUser
 * @param {string} email
 * @param {string} password
 * @param {string} name
 */
const createUser = async (email, password, name) => {
  const user = await getUser(email);
  if (user) throw new Error('User account already exists');

  bcrypt.genSalt(10, (salt) => {
    bcrypt.hash(password, salt, (hashedPassword) => {
      db.collection('users')
        .doc(email)
        .set({ hashedPassword, email, name });
    });
  });
};

, и я получаю эту ошибку

        throw new Error(validate_1.customObjectMessage(arg, value, path));
        ^

Error: Value for argument "data" is not a valid Firestore document. Input is not a plain JavaScript object (found in field "hashedPassword").
    at Object.validateUserInput (/home/abdessalem/Desktop/tutum/test/simple-auth-app/node_modules/@google-cloud/firestore/build/src/serializer.js:301:15)
    at validateDocumentData (/home/abdessalem/Desktop/tutum/test/simple-auth-app/node_modules/@google-cloud/firestore/build/src/write-batch.js:620:22)
    at WriteBatch.set (/home/abdessalem/Desktop/tutum/test/simple-auth-app/node_modules/@google-cloud/firestore/build/src/write-batch.js:234:9)
    at DocumentReference.set (/home/abdessalem/Desktop/tutum/test/simple-auth-app/node_modules/@google-cloud/firestore/build/src/reference.js:340:14)
    at /home/abdessalem/Desktop/tutum/test/simple-auth-app/src/firestore/index.js:54:10
    at /home/abdessalem/Desktop/tutum/test/simple-auth-app/node_modules/bcrypt/bcrypt.js:140:13
    at processTicksAndRejections (internal/process/task_queues.js:79:11)

1 Ответ

0 голосов
/ 08 апреля 2020

Скорее всего, ha sh возвращается как читаемый поток, и в этом случае вы можете, например, закодировать его в шестнадцатеричном виде:

hashedPassword.toString("hex")
...