首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问前端的Fi还原ID生成器

访问前端的Fi还原ID生成器
EN

Stack Overflow用户
提问于 2019-06-13 06:35:04
回答 5查看 7.5K关注 0票数 11

我想在前端设置文档is,同时set文档,所以我想知道是否有一种方法可以生成Firestore is,它可能如下所示:

代码语言:javascript
复制
const theID = firebase.firestore().generateID() // something like this

firebase.firestore().collection('posts').doc(theID).set({
    id: theID,
    ...otherData
})

我可以使用uuid或其他一些id生成器包,但我正在寻找一个修复id生成器。这就是答案指向一些newId法,但我在JS中找不到它.(https://www.npmjs.com/package/firebase)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-12-30 09:24:37

编辑:Chris的答案是最新的,使用crypto生成随机字节可能更安全(尽管在非节点环境中使用crypto可能会遇到困难,例如random )。

原始答案:

在react不和谐聊天中询问之后,我被指向了react本机- Firebase库中的这个功用函数。在本质上,它与我在问题中提到的SO答案所指的功能相同(参见firebase-js这里中的代码)。

根据您在Firebase周围使用的包装器,不一定导出/访问ID生成util。因此,我只是将其作为util函数复制到我的项目中:

代码语言:javascript
复制
export const firestoreAutoId = (): string => {
  const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'

  let autoId = ''

  for (let i = 0; i < 20; i++) {
    autoId += CHARS.charAt(
      Math.floor(Math.random() * CHARS.length)
    )
  }
  return autoId
}

很抱歉,迟来的回复:/希望这有帮助!

票数 15
EN

Stack Overflow用户

发布于 2020-05-29 19:07:19

代码语言:javascript
复制
import {randomBytes} from 'crypto';

export function autoId(): string {
  const chars =
    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  let autoId = '';
  while (autoId.length < 20) {
    const bytes = randomBytes(40);
    bytes.forEach(b => {
      // Length of `chars` is 62. We only take bytes between 0 and 62*4-1
      // (both inclusive). The value is then evenly mapped to indices of `char`
      // via a modulo operation.
      const maxValue = 62 * 4 - 1;
      if (autoId.length < 20 && b <= maxValue) {
        autoId += chars.charAt(b % 62);
      }
    });
  }
  return autoId;
}

摘自Firestore Node.js SDK:https://github.com/googleapis/nodejs-firestore/blob/4f4574afaa8cf817d06b5965492791c2eff01ed5/dev/src/util.ts#L52

票数 5
EN

Stack Overflow用户

发布于 2021-10-17 11:59:05

另一种选择是:

  1. 安装@google云/消防站npm install @google-cloud/firestore
  2. 然后在需要时导入和使用autoId
代码语言:javascript
复制
import {autoId} from "@google-cloud/firestore/build/src/util";
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56574593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档