我想显示一个玩具列表。 ach玩具作为一个独特的名字。 该名称可以包含任何字符,因此它可以有一个斜线或一个美元。 这就是为什么我更愿意使用push方法来获取生成的密钥。Firebase数据收集与唯一成员
我最终的代码很麻烦。 它不是线程安全的,我最终可能会有重复的玩具。 有没有更好的方法?
var child = testsRef.orderByChild("name").equalTo("Meccano");
return child.once('value').then(function(snapshot) {
var snap = snapshot.val();
if (snapshot.val()) {
alert('Toy ' + value + ' already exists.');
} else {
var newPostKey = testsRef.push().key;
var updates = {};
updates[newPostKey] = { name: value };
var result = testsRef.update(updates);
alert('We can only assume that it has worked.' + result);
}
});
我建codepen这里说明我的问题,一个完整的工作: http://codepen.io/paganaye/pen/EWrayY
我听到你说什么。 虽然你的函数确实代替了太多的字符。 怎么样: function fbKeySanitizer(str){ return str.replace(/[%.$[\]#\/]/ g,function(c){''''')'c.charCodeAt(0) .toString(16).toUpperCase(); }); } –
这可能会工作,但是URL安全至少在我的情况下是方便的。一旦你选择一个编码,坚持下去。如果开始编码的方式不同,即使无损往返,查找也会失败。 – Mike
我认为你的正则表达式被破坏了,但是你需要在第一个方括号中进行转义。 ''%。$ []#/“。replace(/[%.$[]#\/]/ g,'*')'=>'”%。$ []#/“'但是'”%。 $ []#/“。replace(/[%.$[\]#\/]/ g,'*')'=>''*******”' – Mike