【问题标题】:Realtime database doesn't give me the push().key on Android, works fine on iOS实时数据库在 Android 上没有给我 push().key,在 iOS 上可以正常工作
【发布时间】:2023-03-10 03:09:01
【问题描述】:

在 Android 上,推送引用未定义,关键也是如此。在 iOS 上运行良好。

我正在使用 react-native-firebase 11.0.0。

listKey 在第 4 行未定义。使用 push 命令将列表添加到数据库中,但由于我没有得到 listKey 的其余部分代码不起作用。如前所述,iOS 完全没有问题。从数据库中读取数据在 Android 上运行良好。

我试过了:

  1. 将 react-native-firebase 更新到 11.4.1,没有变化
  2. 将 repo 下载到另一个文件夹并在没有 package-lock.json 的情况下执行 npm install(在 package.json 中修复了 11.0.0)
  3. const listPushRef = await listsRef.push({ user: getUser(), name: listName }); 给出一个错误,它无法在未定义的情况下运行 .then()。

有什么想法吗?

代码:

export const addList = async (listName, freeCategory) => {
  const listsRef = database().ref(`lists`);
  const listPushRef = listsRef.push({ user: getUser(), name: listName });
  const listKey = listPushRef.key;

  const usersListsRef = database().ref(`users/${getUser()}/lists`);
  const usersLists = await usersListsRef.once('value').then(snapshot => snapshot.val() || []);
  usersLists.push(listKey);
  usersListsRef.set(usersLists);

  const userRef = database().ref(`users/${getUser()}`);
  const user = await userRef.once('value').then(snapshot => snapshot.val());
  const listConfigurations = user.listConfigurations || {};
  listConfigurations[listKey] = [
    {
      id: freeCategory,
      isCategory: true,
      compareTo: [],
    },
  ];
  userRef.update({ listConfigurations });

  return listKey;
};

【问题讨论】:

  • Pssst 应该等待吗?一些浏览器会很好地使用此规则,但如果它未定义,则可能没有返回承诺并且您跳过了它?其他浏览器对此表现正常吗?
  • 尝试在 listsRef 上运行 console.log 并确定它是否在 android 中及时定义或尝试在它前面等待? :O
  • 我已经尝试在它前面等待,我应该列出它。我收到“无法在未定义的情况下运行 .then()”或类似信息。当我 console.log listKey 它是未定义的,当我 console.log listPushRef 它是一个未解决的承诺。
  • 是否定义了数据库?似乎这里没有承诺什么,到目前为止它可能不在这个函数中
  • 列表被写入数据库,所以我认为它是。如果那里有问题,我可以检查一下。

标签: javascript android firebase react-native-firebase


【解决方案1】:

为了将来参考,我没有太多时间花在这上面,所以我不得不通过创建自己的密钥来解决这个问题。

所以我没有使用listPushRef.key,而是生成了一个UUID。不是最佳的,但它有效。

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 2023-03-15
    • 2011-06-21
    • 2012-07-26
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多