我目前正在开发一款使用 firestore 的卡路里跟踪应用程序。
我使用 firestore 将食品存储在文档中。但是,其中一些食品包含字段路径中不允许的受限字符(“~”、“*”、“/”、“[”或“]”)。
例如,这张地图包含食物。请注意限制字符的使用。
是否有推荐的方法来处理受限字符的使用?我正在考虑在更新 firestore 之前对字符串进行编码和解码,并在获取文档时对它们进行解码,通过用特定字符串替换所有受限字符。
感谢您的帮助!谢谢!
使用 Firebase 时,引用键名称中不允许使用某些字符(.、$、[、]、#、/)。要解决此问题,您可以使用 JavaScript 的内置编码函数。然而,没有任何一个函数能够独自完美地处理所有禁止的字符。这是处理此问题的简单方法:
1.) 禁止字符:Firebase 键中不能使用的字符包括 .、$、[、]、# 和 /。
2.)编码函数:JavaScript提供了escape()、encodeURI()和encodeURIComponent()等函数。其中,encodeURIComponent() 是最有效的,但不处理 .性格很好。
3.)解决方案:使用encodeURIComponent(),然后手动替换任何剩余的禁止字符,例如句点(.)。具体方法如下:
var encodeFirebaseKey = function(key) {
return encodeURIComponent(key).replace(/\./g, '%2E');
};
// Examples
console.log(encodeFirebaseKey('[email protected]')); // "Henry%2EMorgan%40caribbean%2Esea"
console.log(encodeFirebaseKey('02/10/2013')); // "02%2F10%2F2013"
4.)解码:从 Firebase 检索数据时,您需要将密钥解码回其原始形式:
var decodeFirebaseKey = function(encodedKey) {
return decodeURIComponent(encodedKey.replace(/%2E/g, '.'));
};
// Examples
console.log(decodeFirebaseKey('Henry%2EMorgan%40caribbean%2Esea')); // "[email protected]"
console.log(decodeFirebaseKey('02%2F10%2F2013')); // "02/10/2013"
通过将encodeURIComponent() 与replace() 链接起来,您可以确保所有禁止的字符都得到正确编码,从而使它们可以安全地用作Firebase 密钥。这种方法可确保您的数据保持完整且可访问,同时遵守 Firebase 的要求。