Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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_Parse Platform - Fatal编程技术网

Javascript 创建对象并添加到指针数组-始终替换现有数组

Javascript 创建对象并添加到指针数组-始终替换现有数组,javascript,parse-platform,Javascript,Parse Platform,我可能不知怎么地误解了文档,但无法理解这一点 我想做的是能够创建一个新的ClientContact,并将其保存到Clients表中名为contacts的指针数组中 以下是相关代码: var Client = Parse.Object.extend("Client"); var selectedClient = new Client(); // sets the objectId based on URL params selectedClient.id = $routeSegment.$rout

我可能不知怎么地误解了文档,但无法理解这一点

我想做的是能够创建一个新的
ClientContact
,并将其保存到
Clients
表中名为
contacts
的指针数组中

以下是相关代码:

var Client = Parse.Object.extend("Client");
var selectedClient = new Client();
// sets the objectId based on URL params
selectedClient.id = $routeSegment.$routeParams.id;

var ClientContact = Parse.Object.extend("ClientContact");
var contact = new ClientContact();
contact.set('name', 'test');
contact.set('desc', 'some description');
contact.set('phoneNumber', '123');

selectedClient.add('contacts', contact);
selectedClient.save().then(function() {
    console.log('saved');
}, function(error) {
    console.error(error);
});
正如预期的那样,当保存
selectedClient
时,
contact
会自动保存并添加到
contacts

但是如果我再次运行相同的代码(在测试中,这意味着刷新页面),则会保存一个新的
ClientContact
,但它会完全替换
contacts
数组

也就是说,只有最新的
客户端联系人
客户端
关联,任何新添加的内容都将替换该数组,只留下一个指针


我希望有一个明显的简单解决方案,我只是没有发现。

好的,看来我已经找到了问题所在

我假设对象上的数组操作与局部表示无关

我在上面所做的是基于已知的objectId构建一个对象:

var Client = Parse.Object.extend("Client");
var selectedClient = new Client();
// sets the objectId based on URL params
selectedClient.id = $routeSegment.$routeParams.id; 
结果表明,像
add
remove
这样的数组操作是基于本地信息执行的。因此,执行上述构造会在每次页面刷新时将selectedClient对象中的数组留空。这就是我的数组被替换为新的单值数组的原因

简言之,在执行数组操作之前应该先获取对象

上面构造的原因是避免在基于AngularJS的网页中导航时必须重新查询客户端对象。幸运的是,解决方案很简单:在父范围中加载客户机对象一次。 这超出了问题的范围。我也想提一下