Javascript 推送到Firebase阵列时写入预先确定的节点id
以前有人问过这个问题,但所提供的解决方案似乎都不能解决我的问题: 我在Firebase上有一个数据数组,我使用一个“for”循环,并因此使用一个索引值,在我的应用程序中循环生成内容。这可以很好地处理预定的数据集,因为ID是简单的数组数字,但是当用户添加一些新数据时(通过push()添加到数组中),firebase会为新数据集创建一个唯一的节点键(例如-KyWRU7RRCE_V1w_OiZx),由于某种原因,这会阻止我的循环工作(控制台中没有显示错误) 如果我转到firebase并手动确保新数据集具有数值,则循环将再次开始工作。我如何使它在用户将新数据推送到数组时,生成的键是数字键?我试过这个:Javascript 推送到Firebase阵列时写入预先确定的节点id,javascript,arrays,loops,firebase,firebase-realtime-database,Javascript,Arrays,Loops,Firebase,Firebase Realtime Database,以前有人问过这个问题,但所提供的解决方案似乎都不能解决我的问题: 我在Firebase上有一个数据数组,我使用一个“for”循环,并因此使用一个索引值,在我的应用程序中循环生成内容。这可以很好地处理预定的数据集,因为ID是简单的数组数字,但是当用户添加一些新数据时(通过push()添加到数组中),firebase会为新数据集创建一个唯一的节点键(例如-KyWRU7RRCE_V1w_OiZx),由于某种原因,这会阻止我的循环工作(控制台中没有显示错误) 如果我转到firebase并手动确保新数据集
// Push new routine to Firebase.
var firebaseRef = firebase.database().ref();
var createdExercise = JSON.parse(localStorage.newRoutine);
$("#save").click(function()
{
firebaseRef.child("workouts").key(some_indexed_value).push(createdExercise);
});
但控制台返回以下错误:uncaughttypeerror:firebaseRef.child(…)。键不是函数
如果有用,下面是我正在使用的循环:
// Initialize Firebase.
firebase.initializeApp(config);
// Reference data.
var dbRef = firebase.database().ref().child("workouts");
// Sync with Firebase in real time.
dbRef.on("value", snap =>
{
var workouts = snap.val();
for (var i = 0; i < workouts.length; i++)
{
var routine = workouts[i].title;
var time = 3;
var exercises = workouts[i].exercises;
var icons;
$("#cardList").append(createCards(routine));
}
});
//初始化Firebase。
firebase.initializeApp(配置);
//参考数据。
var dbRef=firebase.database().ref().child(“训练”);
//与Firebase实时同步。
dbRef.on(“值”,捕捉=>
{
var-workouts=snap.val();
对于(var i=0;i
还有一张我在Firebase上的JSON数据图片:你的问题的答案是使用
.set()
而不是像这样使用.push()
firebaseRef.child("workouts").child(some_indexed_value).set(createdExercise);
这将使用自定义密钥在“训练”下创建一个节点
但建议使用
按键
并使用forEach()
方法来获得结果,而不是使用for loop
SUPER!非常感谢你。