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的网页中导航时必须重新查询客户端对象。幸运的是,解决方案很简单:在父范围中加载客户机对象一次。
这超出了问题的范围。我也想提一下