@
shunia 你的每个建议都挺好的,我会在后续的版本里考虑添加进去。由于你提的问题有些多,我还是一个一个来回复,一个问题没弄清楚之前就不继续回答另一个了。
我按照回复起来从简单到难的顺序。5 和 6 可以一起作答。const user = new User({name, age}) 这种形式,嘿嘿,有的,文档开头的示例也有提到。这里就带来了 `this.attributes` 的用法了,你看看能不能接受。
批量设置属性有两种形式,第一种是通过构造函数:
const user = new User({ name, age })
第二种是先从某处获得了模型实例,然后再批量设置属性:
const user = User.find(id)
user.attributes = { name, age }
其实 this.attributes 就是 user.attributes 了,只不过是用在方法里,引用实例要用到 this.
另一个问题是 save 实现在静态方法里,由于我所做的只是薄封装,具体实现还是需要用户自己来的,所以将 save 实现在静态方法是可以的,像这样
static: {
async save (user) {
const attrs = await axios.put('/user', user.attributes)
return new User(attrs)
}
}
与实现为实例方法的比较
actions: {
async save () {
const attrs = await axios.put('/user', this.attributes)
this.attributes = attrs
}
}
以及它们的调用比较:
static => User.save(user)
instance => user.save()
我个人是倾向于后者了。至于每个人具体用哪种,见仁见智。