Javascript firebase firestore是否更改了退货承诺?

Javascript firebase firestore是否更改了退货承诺?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,从今天起2020年10月26日,我通过数据库调用来收集其他数据。 这对我来说是一个巨大的改变,我必须改变我的全部代码,这是几天的工作。 用户名变量在今天之前一直有效 当删除用户名时,我的代码工作,然后我进入其他页面 代码又被破解了 错误 未捕获(承诺中)TypeError:无法读取未定义的属性“$t” 我的代码 handleLogin = async () => { await fire .auth() .signInWithEmailAndPas

从今天起2020年10月26日,我通过数据库调用来收集其他数据。 这对我来说是一个巨大的改变,我必须改变我的全部代码,这是几天的工作。 用户名变量在今天之前一直有效 当删除用户名时,我的代码工作,然后我进入其他页面 代码又被破解了 错误

未捕获(承诺中)TypeError:无法读取未定义的属性“$t”

我的代码

 handleLogin = async () => {    
    await fire
      .auth()
      .signInWithEmailAndPassword(this.state.userName, this.state.password)
      .then((u) => {
        console.log(u)
        this.props.toggleLogin();
        db.collection('users')
          .where('userId', '==', u.user.uid)
          .get()
          .then((res) => {
            console.log(res)
            let result = res.docs;
            console.log(result)
            let userName =
              result[0]._E.$t.proto.mapValue.fields.userName.stringValue;

            this.props.setUser(u.user.uid, userName);
            sessionStorage.setItem('userId', u.user.uid);
          });
        this.props.history.push('/portfolio');
      })
      .catch((err) => {
        console.log(err);
        if (this.state.email === '') {
          this.dialog.showAlert('Please enter a valid email');
        } else if (this.state.password === '') {
          this.dialog.showAlert('Please enter a valid password');
        }
      });
  };

看起来您正试图依赖Firestore SDK的未记录、缩小的内部实现,但这根本不能保证工作正常

我想你想要的是:

let result = res.docs;
let userName = result[0].get('userName');

看起来您正试图依赖Firestore SDK的未记录、缩小的内部实现,但这根本不能保证工作正常

我想你想要的是:

let result = res.docs;
let userName = result[0].get('userName');

因此,使用结果[0]不是一种好的做法?最好使用结果[0]。获取('userName')?正确,我们只保证客户的行为。坚持参考文档中出现的东西,你就会保持良好状态。谢谢你的帮助,我还有一个问题。因此get()总是会给出与结果[0]相同的结果。\u E.$t.proto.mapValue.fields.userName.stringValue。在本例中,将使用usernames,因为使用结果[0]是不好的做法。_E.$t.proto.mapValue.fields.userName.stringValue?最好使用结果[0]。获取('userName')?正确,我们只保证客户的行为。坚持参考文档中出现的东西,你就会保持良好状态。谢谢你的帮助,我还有一个问题。因此get()总是会给出与结果[0]相同的结果。\u E.$t.proto.mapValue.fields.userName.stringValue。在这个例子中,它将是userName@AlexanderStaroselsky我有多个用户的多个文档。医生说的很糟糕change@AlexanderStaroselsky我有多个用户的多个文档。而docId是一种改变