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

Javascript 使用Node.js以编程方式删除Firebase用户,javascript,node.js,firebase,Javascript,Node.js,Firebase,我将Firebase SDK与Node.js一起使用,并尝试通过编程方式删除大量由其电子邮件地址标识的帐户 工作原理是在我的firebase-delete-users.js文件中硬编码这些帐户,如下所示: const uids = [ {email: 'user1@example.com'}, {email: 'user2@example.com'}, ]; const markedForDelete = []; // Retrieve a batch of user account

我将Firebase SDK与Node.js一起使用,并尝试通过编程方式删除大量由其电子邮件地址标识的帐户

工作原理是在我的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");
accounts-to-delete.txt:

如果我比较UID和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]);
}
如果有助于找到解决方案:


如果.json或其他文件类型更适合此用例,则不必是.txt文件

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

迭代对象数组的代码只是利用了uids2中的数据已经被结构化为Javascript数组和对象这一事实。从文件中读取原始文本行时,其工作方式不同

您读取文件的代码位无法假定原始形式的数据的JSON结构。UID只是一个字符串数组。您必须解析JSON,并使用将每一行转换为实际的JavaScript对象。类似的方法可能会奏效:

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

与以前一样,使用此UID不仅仅是字符串数组。现在,它是一个更容易使用的JavaScript对象数组。

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

迭代对象数组的代码只是利用了uids2中的数据已经被结构化为Javascript数组和对象这一事实。从文件中读取原始文本行时,其工作方式不同

您读取文件的代码位无法假定原始形式的数据的JSON结构。UID只是一个字符串数组。您必须解析JSON,并使用将每一行转换为实际的JavaScript对象。类似的方法可能会奏效:

var uids = fs
    .readFileSync("accounts-to-delete.txt", 'utf8')
    .toString()
    .split("\n")
    .map(line => JSON.parse(line));
与以前一样,使用此UID不仅仅是字符串数组。它现在是一个更易于使用的JavaScript对象数组。

fs.readFileSyncaccounts-to-delete.txt,'utf8'.toString.split\n;返回字符串数组,而不是所需的数组或objectsm

因此,您可以使用JSON.parse解析每个拆分行。

fs.readFileSyncaccounts-to-delete.txt,'utf8'.toString.split\n;返回字符串数组,而不是所需的数组或objectsm

因此,您可以使用JSON.parse来解析每个拆分行