【发布时间】:2017-03-16 11:21:27
【问题描述】:
这是我第一次开发 SPA,我没有使用 React、Vue 或 Angular 等 JS 框架。我的项目只是使用 firebase sdk 和 jquery 来访问 DOM 元素。
在我的应用中,用户可以与项目相关联。从那以后,我有一个 user-projects 和 project-users 路径来表示这种关系。
当用户登录我的应用程序时,我请求 users/uid 获取用户数据。之后,我必须获取与用户关联的项目。我会拿关联项目的id来最终请求各个项目的数据。
我正在尝试使用here 中描述的承诺,但我在控制台中什么也得不到。
function loadUserProjects() {
// Authenticated user
var user = firebase.auth().currentUser;
// General reference to the real time db
var ref = firebase.database().ref();
// Request the user data
ref.child('users/'+user.uid).on('value').then(function(snapshot) {
var user_data = snapshot.val(); console.log(user_data);
// Global variable to store the id of the selected project
project_selected_key = user_data.project_selected;
// Get the list of associated projects
return ref.child('user-projects/'+user.uid).on('value').then(function(snapshot) {
console.log(snapshot);
return snapshot;
});
}).then(function (projectsSnapshot) {
console.log(projectsSnapshot);
// List associated projects
var project_options = '';
projectsSnapshot.forEach(function (e) {
project_options += '<option value="'+e.key+'">'+e.val()+'</option>';
});
if (! project_options) {
project_options = '<option disabled selected value>- Ningún proyecto -</option>';
}
$('#project_selected').html(project_options);
}, function(error) {
// Something went wrong.
console.error(error);
});
}
我知道我必须使用一个额外的请求,因为此时<select>将填充true值(额外的请求必须查询每个项目的完整数据)。但我没有在控制台中收到消息。
提前致谢。
之后,我需要在每个项目中定义不同的权限级别,并在将项目分配给特定用户时关联一个级别。最初我对实时感到非常兴奋,但似乎 firebase 变得比我想象的要复杂。
【问题讨论】:
标签: javascript jquery promise firebase-realtime-database