繁体   English   中英

JavaScript/Firebase:如何在 Firebase 实时数据库中存储 URL?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM