首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用云功能更新防火墙文档

使用云功能更新防火墙文档
EN

Stack Overflow用户
提问于 2019-03-17 03:02:25
回答 1查看 10.9K关注 0票数 5

hello试图用云函数更新防火墙中的文档,但我对云函数如何知道更新哪个文档感到困惑,这是我的代码。

云函数代码

代码语言:javascript
复制
exports.newsletterGreetConfirm = functions.firestore
  .document('newsletter/{newsletterId}')
  .onUpdate((change, context) => {
    const newValue = change.after.data();
    console.log(newValue);
    return 0;
  });

在我的云函数中,shell将以下对象传递给我的newsletterGreetConfirm函数

代码语言:javascript
复制
{email:"test@gmail.com",id:"LgNqtD6Ih7SYPEEz8jJl",subscribedToNewsletterList:true,timestamp:12321312}

我的输出是undefined

我的目标是确认电子邮件地址时,用户单击一个按钮或链接,在他们的确认电子邮件。仅仅在构建这个功能的第一阶段,谢谢您的帮助!也可以使用react

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-17 04:37:22

其想法是要么通过电子邮件中发送的URL直接生成HTTP请求到firebase,要么通过React来完成它。

您可以将它们发送到URL example.com/verify/USER_DOC_ID

假设您使用了react-router-dom,并且希望使用web来避免创建HTTP请求,您将在您的React组件中执行如下操作(这也假设您使用的是正确的防火墙):

代码语言:javascript
复制
import React, {Component} from 'react':
import firestore from './firestore'; //this is your config file
import {withRouter} from 'react-router-dom';


class Verify extends Component {

    componentDidMount(){
        const {pathname} = this.props.location;
        const ID = pathname.split('/')[2];
        //DO THE FIREBASE UPDATE HERE
     }
     render(){...}


export default withRouter(Verify);

现在,对于我放置//DO THE FIREBASE UPDATE HERE的位置,您有几个选项。您可以创建指向防火墙的http请求,也可以使用web端防火墙。如果您使用的是web端防火墙,则只需更新firebase中的文档(注意,如果您正在执行获取请求,则不需要在react中导入防火墙)。

反应的方式包括这样的东西:

代码语言:javascript
复制
const ref = firebase.firestore().collection('newsletter').doc(ID);
ref.get().then((doc) => {
    if(doc.exists()){
        ref.update({verified: true});
  });

与防火墙交互的逻辑在后端与Admin非常相似,但是您将在云函数中将其封装在HTTP请求中:

代码语言:javascript
复制
exports.verify = functions.https.onRequest((req, res) => {
  // admin api call with req params or body
});

使用上面的代码,您可以直接从电子邮件导航到这里,直接用HTML进行响应,或者可以通过react应用程序(如fetch("https://example.com/verify/ID").then(...) )中的获取请求来调用它。

如果您想了解更多关于上述任何一种方法的详细信息,请将其作为一个单独的问题发布,如果您在上面找不到,请告诉我,我会尽力回答的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55203475

复制
相关文章

相似问题

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