繁体   English   中英

使用 Node.js 以编程方式删除 Firebase 用户

[英]Delete Firebase Users programmatically with Node.js

我将 Firebase SDK 与 Node.js 一起使用,并尝试以编程方式删除大量帐户(由其 email 地址标识)。

有效的方法是在我的 firebase-delete-users.js 文件中对这些帐户进行硬编码,如下所示:

const uids = [
  {email: 'user1@example.com'},
  {email: 'user2@example.com'},
];

const markedForDelete = [];

// Retrieve a batch of user accounts.
admin.auth().getUsers(uids)
  .then((result) => {

    result.users.forEach((user) => {
        markedForDelete.push(user.uid);
    });

    result.notFound.forEach((uid) => {
      console.log(`No user found for identifier: ${JSON.stringify(uid)}`)
    });
  })
  .then(() => {
    // Delete all marked user accounts in a single API call.
    return admin.auth().deleteUsers(markedForDelete);
  });

但是,如果我尝试从 .txt 文件中获取这些元素,它就不再起作用了,其中每一行都是一个数组元素。

var uids = fs.readFileSync("accounts-to-delete.txt", 'utf8').toString().split("\n");

帐户删除.txt

{email: 'user1@example.com'}
{email: 'user2@example.com'}

如果我比较 uids 和 uids2,控制台日志看起来也不完全一样,但我不明白原因以及如何解决它:

var uids = fs.readFileSync("accounts-to-delete.txt", 'utf8').toString().split("\n");

const uids2 = [
  {email: 'user1@example.com'},
  {email: 'user2@example.com'},
];

for(i in uids) {
  console.log(uids[i]);
}

for(i in uids2) {
  console.log(uids2[i]);
}

来自终端的例子

如果有助于找到解决方案:

它不一定是 .txt 文件 if.json 或其他一些更适合此用例的文件类型。

从文件中读取文本和迭代对象数组的元素是完全不同的任务。 除了迭代之外,它们几乎没有共同点。

您迭代对象数组的代码只是利用了uids2中的数据已经结构化为 Javascript arrays 和 object 的事实。从文件中读取原始文本行的方式不同。

您读取文件的代码无法采用原始形式的数据的 JSON 结构。 uids只是一个字符串数组。 您将必须解析 JSON 并使用JSON.parse()将每一行转换为实际的 JavaScript 对象。 这样的事情可能会起作用:

var uids = fs
    .readFileSync("accounts-to-delete.txt", 'utf8')
    .toString()
    .split("\n")
    .map(line => JSON.parse(line));

有了这个uids ,就不仅仅是一个字符串数组,就像以前那样。 它现在是一个包含 JavaScript 个对象的数组,更易于使用。

fs.readFileSync("accounts-to-delete.txt", 'utf8').toString().split("\n"); 返回一个字符串数组,而不是你想要的数组或对象。

所以你可以使用JSON.parse()来解析每条分割线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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