Firebase/AngularFire有限对象删除其$save()上的属性

Firebase/AngularFire有限对象删除其$save()上的属性,firebase,angularfire,Firebase,Angularfire,我的数据库中有一个名为“questions”的主节点,当我创建对该节点的引用并将其作为$asObject()引入我的项目时,我可以毫无问题地修改单个问题和$save()集合,但是只要我尝试按优先级限制对象,$save()就会删除对象中的所有内容 这很好: db.questions = $firebase(fb.questions).$asObject(); // later : db.questions.$save(); // db.questions is an object with ma

我的数据库中有一个名为“questions”的主节点,当我创建对该节点的引用并将其作为$asObject()引入我的项目时,我可以毫无问题地修改单个问题和$save()集合,但是只要我尝试按优先级限制对象,$save()就会删除对象中的所有内容

这很好:

db.questions = $firebase(fb.questions).$asObject(); 
// later :
db.questions.$save();
// db.questions is an object with many 'questions', which I can edit and resave as I please
但一旦我将代码切换到这个:

db.questions = $firebase(fb.questions.startAt(auth.user.id).endAt(auth.user.id)).$asObject();
// later :
db.questions.$save();
// db.questions is an empty firebase object without any 'questions!'

是否对有限的对象(并非有意双关语)及其更改和保存的能力有一些限制??保存实际上会将问题的更新保存到数据库中,但不知何故会破坏本地$firebase对象

同步阵列的第一行(
$asArray
)文档:

同步数组应用于将被排序、迭代和具有唯一ID的任何对象列表


同步对象的第一行(
$asObject
)文档:

对象对于存储键/值对以及不用作集合的单个记录非常有用

如前所述,如果您打算使用集合并使用
limit
,您应该使用为集合设计的工具(即$asArray)

如果要使用Firebase SDK重新创建
$save
的行为,它将如下所示:

var ref = new Firebase(URL).limit(10);
// ref.set(data); // throws an error!
ref.ref().set(data); // replaces the entire path; same as $save
因此,这里的行为与SDK完全匹配。从技术上讲,您不能对查询实例调用set(),这实际上没有任何意义。限制(10)对JSON对象意味着什么?如果调用set,应设置哪10个无序键?这里没有相关性,limit()实际上只适用于数据集合,而不是键/值对列表

希望有帮助