2016-10-03 3 views
0

文字列変数でオブジェクトの名前を設定することは可能ですか?例えばangularfire2動的データコンテンツでオブジェクトのタイトルを設定します

car: { 
    brands: { 
    var1: {}, 
/*where var1 is a model and want to add some more models in different spaces in time.*/ 
    } 
} 

これは私が想像クエリが動作しますです:

addBrand (var1) { 
    var brandRef = firebase.database() .ref().child ('car/brands'); 
    brandRef.set ({ 
     var1: {} 
    }); 
} 

私が手出力がテキストvar1、ではない、その値です。

これを達成する方法はありますか?

答えて

0

更新回答

あなたはこれを行うことができます。

addBrandInfo (brandName, brandInfo) { 
    let brandRef = firebase.database().ref(`car/brands/${brandName}`); 
    brandRef.set(brandInfo); 
} 

updateBrandInfo (brandName, brandInfo) { 
    let brandRef = firebase.database().ref(`car/brands/${brandName}`); 
    brandRef.update(brandInfo); 
} 

次のセクションでは、各呼び出しがfirebaseどのように影響するかを例で示ししようとします。

// Let's assume your firebase is empty. 

addBrandInfo('tesla', { established: 2003, founder: 'Elon Musk' }); 
// car: { 
// brands: { 
//  tesla: { established: 2003, founder: 'Elon Musk' } 
// } 
// } 

addBrandInfo('ford', { established: 1905, founder: 'Henry Ford' }); 
// car: { 
// brands: { 
//  ford: { established: 1905, founder: 'Henry Ford' }, 
//  tesla: { established: 2003, founder: 'Elon Musk' } 
// } 
// } 

updateBrandInfo('ford', { established: 1903 }); 
// car: { 
// brands: { 
//  ford: { established: 1903, founder: 'Henry Ford' }, 
//  tesla: { established: 2003, founder: 'Elon Musk' } 
// } 
// } 

お知らせをどのように最後の呼び出しupdateBrandInfo()はfordの設立年だけ更新しますが、創業者はです210のみ。

注意car/brands/${brandName}周りの単一引用符探しのものはバックダニとませ単一引用符です。私が何をしたか

+0

あなたは '既存のデータに追加する' .update(SETINFO)を使用することができます。 – Caleb

+0

'setInfo = {};'は前のコンテンツを削除して複数のブランドを保存できないと思います。 – RaulGM

+0

これらの呼び出しを実行すると、あなたの車のブランドに追加され、以前のものは消去されません。 'brandRef.update({volvo:true});' brandRef.update({tesla:true}); '後に' brandRef.set({}); 'を実行すると、' car/brands'が設定されます。 to {}、これは基本的にその参照でオブジェクトをクリアします。もう少しそれをクリアすることを願っています。 – Caleb

1

は次のとおりです。完璧に動作

let brandRef = firebase.database() .ref().child ('car/brands'); 
brandRef.child (var1).set ({ 
    whatever: '' 
}); 
Angularfire2

+0

プリミティブ文字列が必要な場合は、代わりに 'brandRef.chid(var1)。set( 'whatever string'); '上の例では、空の文字列ではなく、' car/brands/ 'に別のオブジェクトを追加します。 – Caleb

0

は、以下のような方法を試してみてください。

addbrand (var1, value) { 
    const toSend = this.af.database.object(`/car/brands/${var1}`); 
    toSend.set(value); 
} 
関連する問題