键必须是非空字符串,并且不能包含“.”、“#”、“$”、“/”、“[”或“]”
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);
【讨论】:
以上是关于键必须是非空字符串,并且不能包含“.”、“#”、“$”、“/”、“[”或“]”的主要内容,如果未能解决你的问题,请参考以下文章
如何解决node.js中的“消息内容必须是非空字符串”[关闭]