以下を使用して、Firebaseデータストアにオブジェクトを追加できます。
var uniqueId = {
name: "a name",
location: "new york"
}
$scope.myItems.$add(uniqueId).then(function(firebaseId){
// do something on success
}, function(){
// do something if call fails
});
上記はデータストアにオブジェクトを追加し、追加が成功した場合、Firebaseによって生成されたIDが返されます。追加したオブジェクトはこのキーの下に保存されます。
データストアに追加するときにキー名を指定する方法はありますか?
たとえば、次のURLを見てください。
https://myapp.firebaseio.com/users/
この場所で、キー1を持つユーザーを子として作成するとします。 URLは次のようになります。
https://myapp.firebaseio.com/users/1
AngularFireを使用してユーザーを作成するには、ユーザーノードで参照を作成し、$ child(1)を呼び出してその場所への参照を作成します。
var usersRef = new Firebase('https://myapp.firebaseio.com/users');
var userRef = new Firebase('https://myapp.firebaseio.com/user/1');
$scope.users = $firebase(usersRef);
// these are the same
$scope.userOne = $firebase(userRef);
$scope.userOne = $scope.users.$child(1);
次に、$set
を使用して、その場所にユーザーの値を格納できます。
var usersRef = new Firebase('https://myapp.firebaseio.com/users');
$scope.users = $firebase(usersRef);
$scope.users.$child(1).set({
first: 'Vincent',
last: 'Van Gough',
ears: 1
});
あなたの場合は次のようになります:
var uniqueId = {
id: 1,
name: "a name",
location: "new york"
};
$scope.myItems.$child(uniqueId.id).$set(uniqueId);
$set
を使用すると、その場所にある以前のデータがすべて破棄されることに注意してください。非破壊的に値を更新するには、$update
を使用します。
あなたはこのようにそれを試すことができます:
var empsRef = ref.child("employees");
empsRef.child('11111').set({
lastname: "Lee",
firstname: "Kang"
});
empsRef.child('22222').set({
lastname: "Nut",
firstname: "Dough"
});
出力は次のようになります。
"employees" : {
"11111" : {
"lastname" : "Lee",
"firstname": "Kang"
},
"22222" : {
"lastname" : "Nut",
"firstname": "Dough"
}
}
$ childと$ setがAngularFire APIから削除されたようです。
これが私の回避策です。
ユーザーオブジェクトを保存する
angular.module("app.services", []).factory("Auth", function ($firebaseAuth, $firebaseObject, FirebaseUrl) {
var auth = $firebaseAuth(new Firebase(FirebaseUrl));
auth.$onAuth(function (authData) {
if (authData) {
var ref = new Firebase(FirebaseUrl + "/users/" + authData.uid);
var user = $firebaseObject(ref);
user.name = authData.facebook.displayName;
user.$save().then(function () {
console.log(user);
});
}
});
return auth;
})
私はまだこれをテスト可能にするために苦労しています...
.setはangularfire apiでまだ機能しています
だから、これを試してください...
var gT = $scope.ultima[0].guia + 1;
var _db = firebase.database().ref('/guias/' + gT);
_db.set({
'artigo': _dt.artigo,
'inicio': $scope.ultima[0].fim + 1,
'guia': $scope.ultima[0].guia + 1,
'fim': $scope.ultima[0].fim + 1 + (1 * _dt.quantidade),
'quantidade': _dt.quantidade,
});