Javascript 更新域中的数组对象
我有一个王国组织和票。一个组织有很多票。因此,要更新组织,如下所示:Javascript 更新域中的数组对象,javascript,arrays,react-native,realm,updates,Javascript,Arrays,React Native,Realm,Updates,我有一个王国组织和票。一个组织有很多票。因此,要更新组织,如下所示: try { realm.write(() => { realm.create('Organization', { id: organization.id, name: organization.name, ticket: downloadTickets(organization
try {
realm.write(() => {
realm.create('Organization', {
id: organization.id,
name: organization.name,
ticket: downloadTickets(organization.id)
}
, true)
})
console.log("inserting/updating ogranization")
} catch(err) {
console.warn(err)
}
downloadTickets
函数返回一个对象数组。这将对我的初次写作起作用。但是如果我想更新数组,我想向数组中添加对象,但不覆盖整个数组。如何在不获取当前值、将其附加到新值并将其返回到对象的情况下执行此操作?这似乎太慢了。当您将create()
与true
参数一起使用时,您正在覆盖现有对象的属性。您需要的是修改现有数据
为此,您必须以某种方式引用原始数组。您可以迭代新的Ticket
s和push()
将它们放入数组,或者在现有数组上使用concat()
并传入新数组
try {
realm.write(() => {
var org = realm.create('Organization', {
id: organization.id,
name: organization.name
}
, true)
// Do this
var newTickets = downloadTickets(organization.id);
for(var i = 0; i < newTickets.length; i++) {
org.ticket.push(newTickets[i]);
}
// or this
org.ticket = org.ticket.concat(downloadTickets(organization.id));
})
console.log("inserting/updating ogranization")
} catch(err) {
console.warn(err)
}
试试看{
realm.write(()=>{
var org=realm.create('Organization',{
id:organization.id,
名称:organization.name
}
,对)
//这样做
var newTickets=下载票证(organization.id);
对于(变量i=0;i
附带说明:引用数组不会将整个内容加载到内存中。阵列的实际数据仅在磁盘上,直到您显式访问它,然后从磁盘读取它。访问阵列以添加新的
票证
s不是一项昂贵的操作。谢谢。concat是我一直在寻找的。如果在这种情况下,我们收到一系列更新的门票
?当我们推到父组织
上时,这似乎会导致重复,因为旧实例不会被替换。在我的例子中,我会定期更新,导致相关子对象的列表在我们不断推动的过程中不断增长,这不是我所期望的