Моя структура БД такая, как показано ниже.
hasDevice
поле - массив ссылок на документы пользователей.
Я пытаюсь удалить дублирование тех же ссылок с 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);
})
Как удалить дублирующиеся ссылки?
EDIT. 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] } },
EDIT2.
Я наконец-то решил это, как показано ниже.
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);