Javascript 使用Node.js以编程方式删除Firebase用户
我将Firebase SDK与Node.js一起使用,并尝试通过编程方式删除大量由其电子邮件地址标识的帐户 工作原理是在我的firebase-delete-users.js文件中硬编码这些帐户,如下所示: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
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来解析每个拆分行