Google Firebase错误(函数返回undefined,期望Promise或value)
我正在开发使用Firebase的服务器。
我在Youtube上复制了Google Developer's Video。
它运行良好,但在日志中有一个错误:
函数返回undefined,预期为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的初学者。
正如弗兰克在对你的post的评论中所表示的那样,正在产生这个警告的返回声明是这样的:
if (post.sanitized) return;
警告可以通过返回一个虚拟值(例如true,false,0)来消除。 该值不被使用。
早期版本的云function没有抱怨,当一个函数退出使用没有价值的返回语句。 这就解释了为什么你看到return;
在你链接的video和文档中 。 我猜想,添加检查未定义的返回值是无意的。 (从@AaronJo下面的评论表明,改变可能是由devise,预计不会改变。)
消除警告最简单的方法是添加一个返回值,如弗兰克所示:
if (post.sanitized) return 0;
另一种select是将触发器从onWrite()
更改为onCreate()
。 然后该职能将不会被调用时,岗位是消毒和产生警告的检查是不需要的:
exports.sanitizePost = functions.database .ref('/test/{pushId}') .onCreate(event => { // <= changed from onWrite() const post = event.data.val(); //if (post.sanitized) return; // <= no longer needed console.log('Sanitizing new post', event.params.pushId); console.log(post); //post.sanitized = true; // <= not needed when trigger is onCreate() post.title = sanitize(post.title); post.body = sanitize(post.body); return event.data.ref.set(post); });
- 如何从Cloud Function获取Firebase项目名称或ID
- Google云端存储的Firebase云端functionAPI错误
- Nodejs Firebase和Angular4authentication
- 使用Node.JS的iOS Firebase Flashlight / ElasticSearch Heroku安装程序
- 错误:未创buildFirebase应用“” – 调用Firebase App.initializeApp()
- 使用NodeJS的Firebase中的事务数据为null
- 从使用Cloud Functions for Fire上传的文件获取下载url
- 如何在我的Firebase无限滚动中按时间顺序sorting数据?
- Firebase倒数计时器跨多个客户端同步