如何定期更新Firebase实时数据库?

时间:2018-10-09 14:35:33

标签: android json firebase server

我有一个异步任务,可以解析html,从中获取一些内容,然后将其放入firebase实时数据库(作为json)中。如果您自己运行代码,我的代码可以工作,但是由于数据在变化,我希望从服务器定期运行代码,比如说每5分钟更新一次我的数据库。在firebase中有可能吗?如果没有,您是否可以解释执行此操作的其他方法(服务器自行定期执行代码)?

static class fetchdata extends AsyncTask<String, Void, DatabaseReference>{

    private DatabaseReference hurriyetDatabase = FirebaseDatabase.getInstance().getReference("HurriyetNews");

    @Override
    protected DatabaseReference doInBackground(String... urls) {

        String url = urls[0];

        hurriyetDatabase.removeValue();

        try {
            Document wholePage = Jsoup.connect(url).get();
            Elements links = wholePage.select(
                    "div.swiper-slide a[href][href*=/gundem/], " +
                            "div.swiper-slide a[href][href*=/dunya/], " +
                            "div.swiper-slide a[href][href*=/ekonomi/], " +
                            "div.swiper-slide a[href][href*=/teknoloji/]");

            for (int i=0; i< links.size(); i++){
                Element link = links.get(i);
                String newsUrl = link.attr("abs:href");
                Document currentnews = Jsoup.connect(newsUrl).get();

                String category = currentnews
                        .select("meta[property=article:section]")
                        .first()
                        .attr("content");

                String title = currentnews
                        .select("meta[property=og:title]")
                        .first()
                        .attr("content");

                String description = currentnews
                        .select("meta[property=og:description]")
                        .first()
                        .attr("content");

                String imageUrl = currentnews
                        .select("meta[property=og:image]")
                        .first()
                        .attr("content");

                String lastUpdateTime = currentnews
                        .select("time")
                        .first()
                        .attr("datetime");

                NewsEntry currentNews = new NewsEntry(
                        "Hürriyet", category, title, newsUrl, imageUrl, lastUpdateTime, description);


                String id = hurriyetDatabase.push().getKey();
                hurriyetDatabase.child(id).setValue(currentNews);

            }


        } catch (IOException e) {
            e.printStackTrace();
        }

        return hurriyetDatabase;
    }
}

我想将此json用作数据库,移动应用程序的客户端将根据其需求从其查询。

2 个答案:

答案 0 :(得分:1)

在Firebase上,您可以使用Cloud Functions来完成此任务,该功能可响应Firebase内部或外部发生的事件而运行。

对于这种特定情况,您希望按计划运行代码,因此请查看Cloud Functions for Firebase trigger on time?

答案 1 :(得分:1)

  

在Firebase中有可能吗?

是的,使用Cloud Functions for Firebase可以自动运行后端代码。这也可以响应Firebase功能和HTTPS请求触发的事件。但是请注意,单个云功能一次只能响应一次在单个位置发生的更改。