[英]JavaScript/Firebase: How to store an URL in Firebase realtime DB?
我只是想将一些数据存储在我的 firebase 实时数据库中,但是这样做时我不断收到此错误:
Paths must be non-empty strings and can't contain ".", "#", "$", "[", or "]"
问题不是我要存储的数据,而是我要给路径的名称。 我希望路径名是一个 URL。 但它显然包含那些“非法”符号。
这就是我尝试命名路径并存储一些数据的方式:
// URL example:
var newNote = firebase
.database()
.ref()
.child("/https://developer.mozilla.org/en
US/docs/Learn/JavaScript/First_steps/Strings") // <-- this is the problem
.set({
title: title,
icon: icon,
body: body,
url: url,
});
关于如何解决这个问题的任何想法?
您需要对 URL 进行编码,使其不再包含任何非法字符。 由于您还将 URL 存储在节点内,因此您可以对密钥进行单向编码。
因此,例如,您可以从字符串中删除所有非法字符。 假设您不希望数据库解释键中的/
,您还将删除它们,并最终得到:
.child("/httpsdevelopermozillaorgen USdocsLearnJavaScriptFirst_stepsStrings")
现在,每当您再次在代码中获得 URL 时,您都会应用相同的编码并以相同的密钥结束。
有许多这样的编码方案,您应该选择最适合您的用例的方案。 例如,您还可以将非法字符替换为某些内容,以获得更具可读性的密钥:
.child("/https___developer_mozilla_org_en US_docs_Learn_JavaScript_First_steps_Strings")
或者您可以完全放弃可读性,并使用 URL 的散列作为其键:
.child(hashCode("/https://developer.mozilla.org/en US/docs/Learn/JavaScript/First_steps/Strings"))
哪个(使用我链接的hashCode
函数)最终存储在:
.child("-1097737053")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.