gpt4 book ai didi

javascript - @firebase/testing - 如何使用 auth.providerId 调用 `initializeTestApp`?

转载 作者:行者123 更新时间:2023-11-28 16:48:41 25 4
gpt4 key购买 nike

例如,我有以下规则:

 match /users/{userId} {
allow create: if isCurrentUser(userId)
&& request.auth.token.firebase.sign_in_provider != 'anonymous';
allow update: if isCurrentUser(userId);
}

function isCurrentUser(userId){
return request.auth.uid == userId;
}

我正在尝试为其添加单元测试并以这种方式初始化应用程序:

const firebase = require("@firebase/testing");

const app = firebase
.initializeTestApp({
projectId: "some-firestore-emulator",
auth: {
uid: "bohdan",

// case 1
token: {
firebase: {
sign_in_provider: "google.com"
}
},

// case 2
providerData: {
providerId: "google.com"
},

//case 3
providerId: "google.com"
}
})

但是当我尝试创建文档时失败:

app.firestore().collections("users").doc("bohdan").set({ name: "Bohdan" }) 

我有这个错误:

FirebaseError: 7 PERMISSION_DENIED: 
Property firebase is undefined on object. for 'create' @ L15

如何运行initializeTestApp并成功创建文档?

最佳答案

app.firestore().collections("users").set({ name: "Bohdan"}) 是错误的。

您应该指定与 request.auth.uid 值相同的文档 ID。像这样。

app.firestore().collection("users").doc("bohdan").set({ name: "Bohdan"})

您可以查看文档和我的 firebase 测试示例吗?

参见:

我试过了。将 initializeTestApp() arg 从 auth.token.firebase.sign_in_provider 更改为 auth.firebase.sign_in_provider

const app = firebase
.initializeTestApp({
projectId: "some-firestore-emulator",
auth: {
uid: "bohdan",
// // case 1
// token: {
// firebase: {
// sign_in_provider: "google.com"
// }
//},
firebase: {
sign_in_provider: "google.com"
}
}
})

您能检查以下链接吗?

关于javascript - @firebase/testing - 如何使用 auth.providerId 调用 `initializeTestApp`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60217886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com