Emberjs 中 model 相关的操作
如果使用 Ember Data 作为项目中的数据处理的话,关于record 的操作是经常会有的,就常用的操作的API 以及 相关的属性做一下学习总结
Creat New Record
在工作中,免不了要在客户端创建 record:
// route.js
// ...
actions: {
createNewRecord() {
this.get('store').createRecord('post', {
'title': 'frontend',
'writedTime': new Date()
})
}
}
这样,当触发 createNewRecord()
这个动作的时候,就会调用 createRecord()
这个函数在本地创建一条新的post
的record
.
我们也可以在ember inspertor中看到我们创建的record
,但是当我们刷新后,这个新创建的 record
将会消失,原因也不难理解,因为我们没有将此 record
上传到数据库中,所以,我们需要使用:
// route.js
// ...
actions: {
createNewRecord() {
let post = this.get('store').createRecord('post', {
'title': 'frontend',
'writedTime': new Date(),
'like': 0
});
post.save();
}
}
这里可以看到createRecord()
这个函数返回的是一条 record
。
而此时save()
函数是向服务器发送了一条 POST
请求,请求地址为 ’posts‘
,携带的data即为createRecord()
方法的第二个参数。返回的是一个 promise 。
Update Record
在工作中,我们也会遇到需要在客户端对 record
进行更新的操作,那我们就可以:
// route.js
actions: {
updateExistRecord(id) {
this.get('store').findRecord('post', id).then(record => {
record.set('title','Be a good frontEnd enginer');
record.save();
});
}
}
代码很清楚,基本上就是说通过id获取到某一record,对它进行更新,然后使用 save()
函数向服务器发送PATCH
请求,请求的地址将是'/posts/id'
。
从上面两个我们可以看出save()
这个函数主要负责的是向服务器发送 record的相关状态及内容,当record 为船新的时候,发送的是 POST
请求,当更新已经存在的 record
的时候,发送的是PATCH
请求。
确认record是否有修改
未晚待续。。。