我正在通过 Ember CLI + Emberfire + Firebase 实施 Facebook 身份验证。
我的 FirebaseSerializer 现在正在搞乱整个应用程序。
这是我得到的错误:
处理路由时出错:lists.index
断言失败:一条(DS.Model 的子类)记录被推送到存储中,todos 的值为'{-JnTd8HfiWnSCMri7zHV: true}',但 todos 是一个 hasMany 关系,因此该值必须是一个数组。您可能应该检查您的数据有效负载或序列化程序。错误:断言失败:一条(DS.Model 的子类)记录被推送到存储中,todos 的值为“{-JnTd8HfiWnSCMri7zHV:true}”,但 todos 是一个 hasMany 关系,因此该值必须是一个数组。您可能应该检查您的数据有效负载或序列化程序。
如果我单击调试链接,我会看到:
Ember['default'].Logger.error.apply(this, errorArgs);
这是我保存在 nutella/serializers/app.js 下的序列化程序:
import DS from 'ember-data';
import Firebase from 'firebase';
import FirebaseAdapter from 'emberfire/adapters/firebase';
export default DS.FirebaseSerializer.extend();
这是我为 OAuth 添加的可能导致问题的代码的一部分:
import Ember from 'ember';
var session = Ember.Object.extend({
ref : new Firebase("https://nutella.firebaseio.com"),
addFirebaseCallback: function() {
var session = this;
this.get("ref").onAuth(function(authData) {
if (authData) {
session.set("isAuthenticated", true);
} else {
session.set("isAuthenticated", false);
}
});
}.on("init"),
login: function() {
return new Promise(function(resolve, reject) {
this.get("ref").authWithOAuthPopup("facebook", function(error, user) {
if (user) {
resolve(user);
} else {
reject(error);
}
});
});
},
currentUser: function() {
return this.get("ref").getAuth();
}.property("isAuthenticated")
});
export default {
name: "Session",
initialize: function (container, app) {
app.register("session:main", session);
app.inject("controller", "session", "session:main");
app.inject("route", "session", "session:main");
}
};
我会很感激你的帮助!