Firebase 数据库触发器上未显示通知

Firebase 数据库触发器上未显示通知,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,我使用firebase云函数在调用数据库触发器时向用户发送通知。注册令牌保存在firebase数据库中。问题是,尽管保存了注册令牌,但这些设备中没有显示通知。 这是index.js 数据库快照: "Token" : { "token_no" : { "ctxjePemYZE:APA91bFJXXyTkyvXOlSY...4VbWu7Vbf7itwbwZu9umSvg_tdB1lKD1d8g" : "true", "dgVszInjIW0:APA91bFZE3Av5unZTgp...RUe

我使用firebase云函数在调用数据库触发器时向用户发送通知。注册令牌保存在firebase数据库中。问题是,尽管保存了注册令牌,但这些设备中没有显示通知。 这是index.js

数据库快照:

"Token" : {
"token_no" : {
  "ctxjePemYZE:APA91bFJXXyTkyvXOlSY...4VbWu7Vbf7itwbwZu9umSvg_tdB1lKD1d8g" : "true",
  "dgVszInjIW0:APA91bFZE3Av5unZTgp...RUeYb-CUhWjO1otqguhE9NTQZ8XgK6nRIW5" : "true"
}
}更新2:

您的代码使用Object.keystkenssnapshot.val获取令牌。这意味着令牌必须是令牌_no下的键,而不是值。像这样:

"Token" : {
  "-KoWsMn9rCIitQeNvixr" : {
    "dK1FjGbNr6k:APA91b...S8JK2d69JpO" : "123" // token is the key, value is not significant; could be "123", true, or 0.
  },
  ...
}
更新:

您应该查看数据库触发器的名称,以便更好地了解参数和数据属性。参数提供对触发器引用中通配符的访问,数据是快照。在代码中,您希望从快照中获取值

添加以下更改:

const title = event.data.child('title').val();
const desp = event.data.child('desp').val();
const token_no = event.data.child('token_no').val()

const payload = {
  notification: {
    title: 'You have a new Alert!',
    body: `${Post.child('title').val()}`,  // <= CHANGED
    //icon: follower.photoURL
  }
};
未定义标记号。当您定义它并想替换它的值时,您需要添加$:

第二个问题是未定义Post,这导致函数执行失败。检查您的功能日志:

const payload = {
  notification: {
    title: 'You have a new Alert!',
    body: `${Post.title}`,
    //icon: follower.photoURL
  }
};

你能检查一下代码是否正确吗?因为我对javascript知之甚少。同样在运行编辑后的代码后,它会被执行,但云函数的日志显示没有要发送的通知令牌,但是这些令牌被保存在数据库中。我不确定代码哪里错了。它还是一样的!日志中仍然显示没有令牌。我们必须创建FirebaseInstanceId来生成令牌,对吗?或者index.js会自动执行?应用程序的每个实例都必须使用FirebaseInstanceId.getInstance.getToken等存储其令牌,并将其存储在数据库中。我也这么做了。但是日志显示没有令牌,情况还是一样。我也更新了代码和数据库快照。如果我在什么地方错了,请告诉我。
const getDeviceTokensPromise = admin.database().ref(`/Token/{token_no}`).once('value');
`/Token/${token_no}`
const payload = {
  notification: {
    title: 'You have a new Alert!',
    body: `${Post.title}`,
    //icon: follower.photoURL
  }
};