【问题标题】:How can Nodejs send real-time data from Firebase to AngularNodejs 如何将实时数据从 Firebase 发送到 Angular
【发布时间】:2019-07-07 05:32:27
【问题描述】:

我通过 nodejs 处理 firestore 并将数据返回到 angular - (当我使用 angular 处理数据时,它将是实时的,但使用 node 时则不是) 所以我想从角度听听 Cloud Firestore 上的任何变化。

/**
 * this is a route to call function get user By email
 */
router.get('/by/email/:email', (req,res)=>{
    //define email user
    let email = req.params.email;
    //check email param
    if(!email){ return res.status(400).json({message:'EMAILISMISSING'}) }
    //call function get user by email 
    userRef.getByEmail(email, (error,user)=>{
        if(error){ return res.status(400).json(error); }
        else{
            return res.status(200).json(user)
        }
    })
})


/**
 * this is the function bring user by email
 * @requires email
 * @returns @callback
 */
exports.getByEmail = (email,callback)=>{
    userRef.where('email','==',email)
           .get()
           .then(user=>{
                user = fb.renderMultiDocs(user);
                if(!user.length) { return callback(false,null)}
                return callback(false,user[0]);
           })
           .catch(error=>{
               return callback(error,false)
           })
}

/**
* this angular function to call by/email route and return
*/
getUserByEmail(email):any{
  return this._http.get(environment.api+'by/email/'+email)
}

【问题讨论】:

  • 为什么不直接从 Angular 连接到 Firestore? Firebase 在客户端而不是服务器端工作得更好。如果您决定在服务器上使用,您最终会得到很多 Firebase 为避免使用而创建的样板代码。
  • 但要回答,您必须使用 websockets。
  • @RicardoSmania 我知道,我需要用角度来处理它,但我在这里遇到了问题,它是 stackoverflow.com/questions/54648880/…,除了用后端处理 firebase 之外,我没有找到解决方案
  • 你可以通过安全规则和声明来做一些事情,而不是通过 AFAIK 的原始白名单。您是否阅读过有关安全性的文档? firebase.google.com/docs/firestore/security/get-started

标签: node.js angular firebase google-cloud-firestore


【解决方案1】:

如果您想从您的 Angular 应用程序中侦听 Cloud Firestore 数据库中的实时更改/更新,您需要为一个文档或一组文档(即整个集合或查询)设置一个侦听器.

关于这一点的标准 Firestore 文档在这里:https://firebase.google.com/docs/firestore/query-data/listen。这将独立于如何执行修改(由用户或后端进程,如 node.js 应用程序或云函数)。

对于 Angular,您可能会使用 AngularFire2 库,尤其是以下文档中描述的技术:

【讨论】:

    猜你喜欢
    • 2021-07-25
    • 2016-04-19
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 2020-07-02
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多