Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新域中的数组对象_Javascript_Arrays_React Native_Realm_Updates - Fatal编程技术网

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是我一直在寻找的。如果在这种情况下,我们收到一系列更新的
门票
?当我们推到父
组织
上时,这似乎会导致重复,因为旧实例不会被替换。在我的例子中,我会定期更新,导致相关子对象的列表在我们不断推动的过程中不断增长,这不是我所期望的