user7455332
user7455332

Reputation:

Firebase HTTP Trigger Cloud Function to change users' values in realtime database

So I have written code which should change a certain value in the database. I would use cron-jobs to trigger it in every 24h, but there is something wrong with my code.

const functions = require('firebase-functions');

exports.resetPicksStatus = functions.https.onRequest((req, res) => {
  .ref('/users/{userId}')
  .onWrite(event => {
    const status = event.data.val()
    if (status.resetted) {
        return true
    }
    console.log("Resetting status for " + event.paramas.userId)
    status.resetted = true
    status.picksDone = resetToNil(status.picksDone)
    return event.data.ref.set(status)
  })
})

  function resetToNil(s) {
    var resetValue = s
    resetValue = resetValue.replace(/\b1\b/ig, "0")
    return resetValue
  }

Upvotes: 0

Views: 462

Answers (1)

Jen Person
Jen Person

Reputation: 7566

It looks like you're trying to put a Realtime Database trigger inside your HTTP trigger, which won't have the outcome you're looking for. Instead of using a database trigger, use the Firebase Admin SDK to access the database from within the HTTP trigger.

In your code, add

const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const ref = admin.database().ref();

And use ref to access the database.

Check out the Admin SDK documentation here.

Here are some samples of Cloud Functions, some of which show the Admin SDK.

Here's a video showing how to use the Admin SDK

Here's a video on timing Cloud Functions

Upvotes: 3

Related Questions