我正在使用Firebase开发Server .
我在Youtube上复制了Google Developer's Video .
它运行良好,但在日志中有一个错误:
函数返回未定义,预期的Promise或value
它说函数返回 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的初学者 .
1 回答
正如弗兰克在对你的帖子的评论中指出的那样,产生警告的返回声明是这样的:
通过返回虚拟值(例如,null,false,0)可以使警告静音 . 该值未使用 .
当函数使用没有值的return语句退出时,早期版本的Cloud Functions没有抱怨 . 这就解释了为什么你在链接的视频和the documentation中看到
return;
. Firebaser Frank van Pufeelen对这个问题的评论解释了为什么要做出改变 .消除警告的最简单方法是添加返回值,如Frank建议:
另一种选择是将触发器从
onWrite()
更改为onCreate()
. 然后在清理帖子时不会调用该函数,并且不需要产生警告的检查: