比较相同的Firestore文档参考

时间:2019-05-04 05:35:49

标签: node.js firebase google-cloud-firestore

我的数据库结构如下。 hasDevice字段是对用户文档的引用数组。

enter image description here

我试图用hasDevices = [...new Set(hasDevices)]删除相同引用的重复项。但这没用。

这是我的代码。

  user.get()
  .then(snapshot => {
    if (!snapshot.exists) {
      return Error('not existing uid');
    }
    let hasDevices = snapshot.get('hasDevices');
    if (!hasDevices) {
      hasDevices = [];
    }
    hasDevices.push(db.collection(constants.DB_COLLECTION_DEVICES).doc(deviceId));
    hasDevices = [...new Set(hasDevices)];
    console.log('hasDevices', hasDevices];
    return user.update('hasDevices', hasDevices);
  })

如何删除重复的引用?

编辑。 console.log('hasDevices', hasDevices];留在日志下方。

hasDevice [ DocumentReference {
    _firestore:
     Firestore {
       _settings: [Object],
       _settingsFrozen: true,
       _serializer: [Serializer],
       _projectId: 'sharp-imprint-234606',
       _lastSuccessfulRequest: 1557034776367,
       _preferTransactions: false,
       _clientPool: [ClientPool] },
    _path: ResourcePath { segments: [Array] } },
  DocumentReference {
    _firestore:
     Firestore {
       _settings: [Object],
       _settingsFrozen: true,
       _serializer: [Serializer],
       _projectId: 'sharp-imprint-234606',
       _lastSuccessfulRequest: 1557034776367,
       _preferTransactions: false,
       _clientPool: [ClientPool] },
    _path: ResourcePath { segments: [Array] } },
  DocumentReference {
    _firestore:
     Firestore {
       _settings: [Object],
       _settingsFrozen: true,
       _serializer: [Serializer],
       _projectId: 'sharp-imprint-234606',
       _lastSuccessfulRequest: 1557034776367,
       _preferTransactions: false,
       _clientPool: [ClientPool] },
    _path: ResourcePath { segments: [Array] } },

编辑2。

我终于如下解决了。

    hasDevices = hasDevices.filter((v,idx) => {
      if (idx === 0) return true;
      for (let i = 0; i < idx; i++) {
        if (v.id === hasDevices[i].id) {
          return false;
        }
      }
      return true;
    });
    return user.update('hasDevices', hasDevices);

1 个答案:

答案 0 :(得分:1)

数据结构中的hasDevices不是数组,而是DocumentReference。

因此,您应该自己制作该数组的无重复版本。

请参阅: