我正在使用 Firebase 开发服务器。
我在 Youtube 上复制了 Google Developer 的视频。
它运行良好,但在日志中出现错误:
函数返回未定义、预期的 Promise 或值
它说函数返回 undefined
,但我让 function
返回一个 promise
`set``
我该如何解决这个问题?
function sanitize(s) {
var sanitizedText = s;
console.log('sanitize params: ', sanitizedText);
sanitizedText = sanitizedText.replace(/\bstupid\b/ig, "wonderful");
return sanitizedText;
}
exports.sanitizePost = functions.database
.ref('/posts/{pushId}')
.onWrite(event => {
const post = event.data.val();
if (post.sanitized) return;
console.log('Sanitizing new post', event.params.pushId);
console.log(post);
post.sanitized = true;
post.title = sanitize(post.title);
post.body = sanitize(post.body);
return event.data.ref.set(post);
})
我是 Firebase、Nodejs 的初学者。
原文由 Josh 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如弗兰克在他对您的帖子的评论中指出的那样,产生警告的返回语句是这样的:
可以通过返回一个虚拟值(例如 null、false、0)来消除警告。该值未被使用。
当函数使用没有值的 return 语句退出时,早期版本的 Cloud Functions 不会报错。这就解释了为什么您在链接的视频和 文档 中看到
return;
。 Firebaser Frank van Pufeelen 对问题的评论解释了进行更改的原因。消除警告的最简单方法是添加一个返回值,正如 Frank 所建议的:
另一种选择是将触发器从
onWrite()
更改为onCreate()
。那么当帖子被清理并且不需要产生警告的检查时,该函数将不会被调用: