我将Firebase对象填充为200个键/值对,然后使用ng-repeat显示它.相关代码是:
<ul>
<li ng-repeat='(n, inst) in db.instances'>Instance {{n}}: {{inst.status}}</li>
</ul>
<script type='text/javascript'>
angular.module('blah', ['firebase']).controller(
'BlahCtrl', function BlahCtrl($scope, angularFire) {
angularFire('https://blahblahblah.firebaseio.com/', $scope, 'db', {});
}
)
</script>
Run Code Online (Sandbox Code Playgroud)
加载页面似乎删除前100个键/值对.
我该如何防止这种行为?
我正在为D&D风格的RPG开发基于Web的角色创建工具.我正努力从我的firebase DB列出"Race".目前的结构如下:
|-ironkingdoms
|--Race
|---Dwarf
|-----RaceName:Dwarf
|-----Starting Attribuites
|------PHY:7
|------STR:8
|------POI:5
|---Human
|-----RaceName:Human
|-----Starting Attributes
|------PHY:6
|------STR:7
|------POI:4
Run Code Online (Sandbox Code Playgroud)
你明白了......我把"RaceName"放在那里,因为我不能为我的生活弄清楚如何让它列出所有"Race"的孩子.这是我的代码:
http://plnkr.co/edit/GhQn1e9bdCdAnKNsJZ1K?p=preview
<html ng-app="myapp">
<head>
<script src='https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.min.js'></script>
<script src='https://cdn.firebase.com/v0/firebase.js'></script>
<script src='https://cdn.firebase.com/libs/angularfire/0.5.0/angularfire.min.js'></script>
</head>
<body ng-controller="MainCtrl">
Data:
<div ng-repeat="item in data">{{item.RaceName}}</div>
<p>
<div>Data loaded: {{dataLoaded}}</div>
<p>
Messages:
<div ng-repeat="msg in messages">{{msg}}</div>
<script>
var app = angular.module('myapp', ['firebase']);
app.controller('MainCtrl', function($scope, $firebase) {
var ref = new Firebase("https://<yourFirebase>.firebaseio.com/Race");
$scope.data = $firebase(ref);
$scope.dataLoaded = "Not yet!";
$scope.messages = [];
$scope.data.$on("loaded", function() {
var keys = $scope.data.$getIndex();
["Race"].forEach( …Run Code Online (Sandbox Code Playgroud) 我使用$ firebaseSimpleLogin使用电子邮件/密码登录Firebase.
当我使用电子邮件/密码登录时,它工作得很好,我可以看到sessionkey被自动保存为cookie.
但是,想要记住登录,这样用户只需登录一次.所以我在auth期间加入了{rememberMe:true}.
如何在加载页面的开头检查会话是否仍处于活动状态?
我目前正在尝试通过AngularFire $set()方法向Firebase添加新用户.我正在通过$createUserAngularFire 的方法创建新用户.我的代码看起来像这样:
$scope.createUser = function() {
$scope.auth.$createUser('dolly@gmail.com', 'password').then(function(user, err) {
if (err) {
console.log('ERROR: ' + err);
} else {
sync.$set('users', user);
}
});
}
Run Code Online (Sandbox Code Playgroud)
这是一个创建新用户并将新用户对象放在用户内部:{..},但是,它还添加了一个仅复制数据的附加用户子对象 - 这是代码添加到Firebase的内容:
{
"users": {
"email": "dolly@gmail.com",
"id": "11",
"isTemporaryPassword": false,
"md5_hash": "xxxxxxxxxxxxxxx",
"provider": "password",
"sessionKey": "xxxxxxxxxxxxx",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0MDc5NDQ2NDYsInYiOjAsImQiOnsicHJvdmlkZXIiOiJwYXNzd29yZCIsImlkIjoiMTEiLCJ1aWQiOiJzaW1wbGVsb2dpbjoxMSIsImVtYWlsIjoiZG9sbHlAZ21haWwuY29tIiwibWQ1X2hhc2giOiIzsdrggfeedsaadrfcDc0ZDRhMTU5NTk2NzI1NzFmMDk2ZTZlNyIsImlzVGVtcG9yYXJ5UGFzc3dvcmQiOmZhbHNlLCJzZXNzaW9uS2V5IjoiM2MwMDNjODkxMDEzOWE5MjhlZTZjNWI1NjU5ZTRiZjMifSwiaWF0IjoxNDA3ODU4MjQ2fQ.p7-9GDtaNpBn1ICTLIUSwlPytaUGi-jyBgcO-LKHUys",
"uid": "simplelogin:11",
"user": {
"email": "dolly@gmail.com",
"id": "11",
"isTemporaryPassword": false,
"md5_hash": "xxxxxxxxxxxxxxx",
"provider": "dfrggrssxxxxxxx",
"sessionKey": "xxxxxxxxxxxxxxx",
"uid": "simplelogin:11"
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望我的用户对象看起来像firebase中的示例,除非每个用户键都是内部的 user.uid
users: {
user1: {
name: "Alice"
},
user2: { …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来获取子元素的方法,而不是单独加载该元素.
假设我有一个Post模型,每个帖子都有评论.这就是我获得帖子模型的方法:
var post = $firebase(new Firebase(FIREBASE_URL + "/posts/" + post_name)).$asObject();
Run Code Online (Sandbox Code Playgroud)
每个帖子都有评论,因此我可以使用以下方式访问评论
post.$loaded(function () {
var comments = post.comments;
}
Run Code Online (Sandbox Code Playgroud)
现在,如何将新元素推送到注释,而无需从Firebase单独加载模型?我应该能够做到以下但它不起作用:
comments.$add({text: "Hi, there"});
Run Code Online (Sandbox Code Playgroud)
是否有任何正确的方法来获取子元素的firebase方法,而无需返回服务器并获取注释?
我正在尝试在Angular Fire 0.9.0中使用新的身份验证方法,但我一定做错了.
我正在运行1.3.2的Angular,2.0.4的Firebase和0.9.0的Angular Fire.
我ng-click在我的html中调用了登录功能.
这是我的js:
var app = angular.module("sampleApp", ["firebase"]);
app.controller('mainCtrl', function ($scope, $firebaseAuth) {
var ref = new Firebase('https://XXXX.xxx');
$scope.auth = $firebaseAuth(ref);
$scope.login = function() {
$scope.num = 'loggin in';
$scope.auth.$authWithPassword({
email: 'xxx@xxx.xxx',
password: 'yyyyy'
}, function(err, authData) {
if (err) {
console.log(err);
$scope.num = err;
} else {
console.log(authData);
}
});
};
Run Code Online (Sandbox Code Playgroud)
我没有在控制台中看到任何内容,也没有任何错误.所以我无法弄清楚如何调试我做错了什么.
当我登录$scope.auth到控制台时,它会显示该$authWithPassword方法.我无法让它发挥作用.
任何帮助,将不胜感激.
当用户单击登录按钮时,将调用登录功能:
login: function() {
ref.auth.$authWithOAuthPopup('facebook').then(user.setUser).catch(function(error) {
console.error('Authentication failed: ', error);
});
}
Run Code Online (Sandbox Code Playgroud)
我使用登录按钮来避免弹出窗口阻止程序.
现在,每当用户访问我的网站或刷新页面时,他们都必须单击登录.如果他们之前已经登录过,有没有办法自动/立即登录?这样,如果立即登录失败,我只能提供登录按钮.
我有以下数据结构
{
"advisors" : {
"0ea9bab6-415e-4900-8698-ac03a1ef4518" : {
"description" : "",
"price" : 0,
"title" : ""
},
"cc31c353-ca6a-440d-b188-af2016f72aef" : {
"description" : "",
"price" : 0,
"title" : ""
},
"d8403e9b-fb74-4425-874f-2d125cd07a68" : {
"description" : "I know every corner in the arab countries.",
"price" : "50",
"title" : "Best guide in the middle east"
}
},
"advisors-countries" : {
"0ea9bab6-415e-4900-8698-ac03a1ef4518" : {
"Angola" : "true"
},
"cc31c353-ca6a-440d-b188-af2016f72aef" : {
"Angola" : "true"
}
},
Run Code Online (Sandbox Code Playgroud)
我想提出以下问题:在列表中给我安哥拉顾问的所有价格.
我尝试了下一个代码,仅检索Adola = true的Advisor的国家/地区.
var …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用firebase来获取分析事件,但我得到的只是session_start事件。我正在使用Firebase 离子插件。
这是我的代码:
constructor(public navCtrl: NavController, private nav: NavController,
private firebaseAnalytics: FirebaseAnalytics) {
this.firebaseAnalytics.setEnabled(true);
this.firebaseAnalytics.logEvent('home_page_viewed', {page: "dashboard"})
.then((res: any) => console.log(res))
.catch((error: any) => console.error(error));
}
Run Code Online (Sandbox Code Playgroud)
因此,我希望在Firebase控制台中看到一个名为“ home_page_viewed”的事件,但我没有看到此事件。我所看到的只是session_start事件。
有人知道我该怎么办?
我真的不知道该如何解决。如何解决此错误?
in user.service.ts:
import { Injectable } from '@angular/core';
import { AngularFireDatabase, AngularFireList, AngularFireObject } from 'angularfire2/database';
import {AppUser} from './models/app.user';
import * as firebase from 'firebase';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class UserService {
constructor(private db: AngularFireDatabase) { }
save(user: firebase.User) {
this.db.object('/users/' + user.uid).update({
name: user.displayName,
email: user.email
});
}
get(uid: string): AngularFireObject<AppUser> {
return this.db.object('/users/' + uid);
}
in admin-auth-guard.service:
import { Injectable } from '@angular/core';
import { Observable } from …Run Code Online (Sandbox Code Playgroud)