键必须是非空字符串,并且不能包含“.”、“#”、“$”、“/”、“[”或“]”

Posted

技术标签:

【中文标题】键必须是非空字符串,并且不能包含“.”、“#”、“$”、“/”、“[”或“]”【英文标题】:Keys must be non-empty strings and can't contain ".", "#", "$", "/", "[", or "]" 【发布时间】:2017-06-22 12:28:07 【问题描述】:

我正在尝试在具有管理员权限的情况下一次在 firebase 函数上写两个地方。 收到这个奇怪的错误:

错误:Firebase.set 失败:第一个参数包含无效密钥 (/Auction/TD6MKEhS/-Kn9cMUPkk)

我的代码是:

var newPostRef = admin.database().ref().child("History/" + this.customeruid + '/' + this.quoteid + '/' + this.banuid).push();
var newPostKey = newPostRef.key;
var updatedBidQuote = ;
// Create the data we want to update
let postData =  creationBidDate: admin.database.ServerValue.TIMESTAMP, customeruid: this.banuid, quoteCompanyCreatoruid: this.customeruid, Amount: this.banBid ;
updatedBidQuote['/Auction/' + this.customeruid + '/' + this.quoteid] = postData;
updatedBidQuote['/History/' + this.customeruid + '/' + this.quoteid + '/' + this.banuid + '/' + newPostKey] = postData;
return admin.database().ref().set(updatedBidQuote);

我检查了 postData 的对象并且没有任何(.keys 或奇怪的值)

【问题讨论】:

【参考方案1】:

你只能将完整路径传递给update,所以最后一行应该是:

return admin.database().ref().update(updatedBidQuote)

【讨论】:

【参考方案2】:

对我来说,我有不必要的大括号。我从

return admin.database().ref().update( updateObj );

return admin.database().ref().update(updateObj);

【讨论】:

以上是关于键必须是非空字符串,并且不能包含“.”、“#”、“$”、“/”、“[”或“]”的主要内容,如果未能解决你的问题,请参考以下文章

打开屏幕时出错:(child:) 必须是非空字符串且不包含

格子 webhook 必须是非空字符串 URL

如何解决node.js中的“消息内容必须是非空字符串”[关闭]

参数“documentPath”的值不是有效的资源路径。路径必须是非空字符串

WSO2用户名test011无效。用户名必须是非空字符串

FCM的Firebase功能不起作用。提供给sendToDevice()的注册令牌必须是非空字符串或非空数组