SPAを初めて開発しましたが、React、Vue、AngularなどのJSフレームワークは使用していません。私のプロジェクトはfirebase sdkとjqueryを使ってDOM要素にアクセスします。多対多関係のfirebaseを照会する方法は?
私のアプリでは、ユーザーはプロジェクトに関連付けることができます。それ以来、私はその関係を表すために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は私が想定していたよりも複雑になっているようです。
ありがとうございます。今私は配列 '' 'project_keys''でプロジェクトキーを持っています。 ref.child( 'projects /' + project_keys [i])。once( 'value') '' '私はあるプロジェクトのプロジェクトデータを取得できます。アレイを使用して1つのリクエストですべてを取得する方法は? – JCarlos