我正在使用 AngularJS 和 Firebase 创建一个 webapp,以便同时学习两者。
我在 firebase (activitylog) 中有一些用户活动数据,这些数据对于新用户来说是不存在的。在添加活动数据的控制器中,我无法找出创建新用户条目以记录新数据的最佳方法。我有以下内容,似乎必须有更好的方法,因为它会导致以后永远不会使用的“虚拟”条目。我的 firebase 被安排为活动日志是用户 id 的子项,例如 firebase/activitylog/[userid]/[activityId]/[activityEntry]。它不必是这样,只是似乎是目前组织它的最佳方式。(请注意,根据 FireFeed RSS 开源项目,我有一个处理名为 fbRef 的 firebase 引用的工厂)。如果在引用不存在的东西时调用 angularFire() 只是创建了一条记录,那就太好了,但它只是给出了一个错误。任何帮助,将不胜感激。
.controller('ActivityLogCtrl', ['$scope', '$location', '$routeParams', '$timeout', 'angularFireCollection', 'angularFire', 'fbRef', function($scope, $location, $routeParams, $timeout, angularFireCollection, angularFire, fbRef) {
//check if the user has a activitylog entry from the past, if not create a default one
var ref = fbRef(['activitylog', $scope.user.id]);
ref.on('value', function(snapshot) {
if(snapshot.val() === null) {
var wlref = fbRef(['activitylog']);
// create a new dummy entry
wlref.child($scope.user.id).set('initial');
}
});
// now I know if have an entry, use it.
angularFire(fbRef(['activitylog', $scope.user.id]), $scope, 'remote', {}).
then(function() {
$scope.activitylog = angular.copy($scope.remote);
...