我想在我的应用程序中创建“收藏夹”模块。我正在使用React-native和Firestore。这是我的代码:
addFavorite() {
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: {
uid : true
}
}, { merge: true }).then(() => {
console.log('Added')
}).catch((e) => {
console.log('error', e)
})
}
removeFavorite() {
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: {
uid: false
}
}, { merge: true }).then(() => {
console.log('Removed')
}).catch((e) => {
console.log('error', e)
})
}
我将收藏夹作为地图存储在Firestore中:
favorite: {
u001: true,
u002: false}
那么有什么方法可以实现?还是你们还有其他想法如何完成最喜欢的事情?
答案 0 :(得分:1)
使用square brackets notation的以下代码应该可以正常工作(如果我正确理解了您的问题!):
addFavorite(uid) {
const favoriteObj = {}
favoriteObj[uid] = true;
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: favoriteObj
}, { merge: true }).then(() => {
console.log('Added')
}).catch((e) => {
console.log('error', e)
})
}
removeFavorite(uid) {
const favoriteObj = {}
favoriteObj[uid] = false;
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: favoriteObj
}, { merge: true }).then(() => {
console.log('Removed')
}).catch((e) => {
console.log('error', e)
})
}
更新: 由于两个函数之间有很多代码是通用的,因此请注意,您可以在一个函数中重构代码,例如:
setFavorite(uid, isFavorite) {
const favoriteObj = {}
favoriteObj[uid] = isFavorite;
getPlaceName().doc(this.selectedPlaceName.id).set({
favorite: favoriteObj
}, { merge: true }).then(() => {
if (isFavorite) {
console.log('Added')
} else {
console.log('Removed')
}
}).catch((e) => {
console.log('error', e)
})
}
其中isFavorite
是布尔值。您可以这样称呼它,例如:
setFavorite("u001", true);
或
setFavorite("u002", false);