更改所有唯一键中的特定值

时间:2017-07-06 20:02:57

标签: javascript firebase firebase-realtime-database google-cloud-functions

所以我试图编写http触发器函数,它会改变每个唯一键(用户id)中的特定值。我写了一些东西,但输出不是我需要的。它不是更改现有值,而是创建新的用户ID。

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

admin.initializeApp(functions.config().firebase)

exports.picksReset = functions.https.onRequest((req, res) => {

  const ref = admin.database().ref()

  const usersPicked = []

  ref.child('users').once('value').then(snap => {
    snap.forEach(childSnap => {

      ref.child('/users/{userId}').push({picksDone: "0"})
      console.log("Changing value...")

    })
  })

  res.send("Done!")

})

我的数据库图片......

enter image description here

1 个答案:

答案 0 :(得分:1)

使用.push()创建一个带有pushId的新子项。相反,请使用.update()。请参阅文档here中的详细信息。如果您希望更改每个用户中的孩子picksDone,可以这样做:

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

admin.initializeApp(functions.config().firebase)

exports.picksReset = functions.https.onRequest((req, res) => {

  const ref = admin.database().ref()

  const usersPicked = []

  ref.child('users').once('value').then(snap => {
    snap.forEach(childSnap => {
      const key = childSnap.key
      ref.child(`users/${key}`).update({picksDone: "0"})
      console.log("Changing value...")

    })
  })
  res.send("Done!")
})