在 firebase 中存储需要限制字符的字段的推荐方式是什么?

问题描述 投票:0回答:1

我目前正在开发一款使用 firestore 的卡路里跟踪应用程序。

我使用 firestore 将食品存储在文档中。但是,其中一些食品包含字段路径中不允许的受限字符(“~”、“*”、“/”、“[”或“]”)。

例如,这张地图包含食物。请注意限制字符的使用。

是否有推荐的方法来处理受限字符的使用?我正在考虑在更新 firestore 之前对字符串进行编码和解码,并在获取文档时对它们进行解码,通过用特定字符串替换所有受限字符。

感谢您的帮助!谢谢!

firebase google-cloud-firestore
1个回答
0
投票

使用 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 的要求。

© www.soinside.com 2019 - 2024. All rights reserved.