在firebase中插入时显式设置键

时间:2016-02-15 00:40:44

标签: firebase

我使用以下代码将新记录插入firebase

var fireBaseRef = new Firebase("https://todoredux1.firebaseio.com/todos");
var newObjRef = fireBaseRef.push();
newObjRef.set({'id': nextId, 'text': text, 'complete': false});
return dispatch(addLocalTodo(nextId, text));

它有效但我的数据看起来像

enter image description here

之前我的按键是整数(1,2,... 6),但现在按键看起来很有趣。

问题是有趣的关键是,当键是整数时,查询结果会返回一个很好的对象数组

enter image description here

但只要输入带有趣键的记录。查询结果的结构更改为

enter image description here

我用来查询数据的代码是

    var fireBaseRef = new Firebase("https://todoredux1.firebaseio.com");
    fireBaseRef.child('todos').once('value', function(todosRef){
        return dispatch(receiveTodosSuccess(todosRef.val()))
    }, function(errorText) {
        return dispatch(receiveTodosFailure(errorText))
    });

1 个答案:

答案 0 :(得分:2)

当您使用.push时,您将拥有搞笑密钥。您需要使用child然后set。为了设置你想要的键,你可以这样做:

// ...
newObjRef.child(nextId).set({'id': nextId, 'text': text, 'complete': false});

如果您使用.child(nextId),则会创建一个包含nextId值的密钥并解决您的问题。

那就是说,使用.push然后.set可能没有太大意义,因为你会创建一个搞笑密钥然后定义它的价值。也许这将是一种更好的方法来实现您的目标:

// Define your Firebase reference. 
var fireBaseRef = new Firebase("https://todoredux1.firebaseio.com/todos");

// Set some data with the key you want.
newObjRef.child(nextId).set({'id': nextId, 'text': text, 'complete': false});

希望它有所帮助。