我正在编写一个使用couchdb作为后端的emberjs应用程序,我想让用户能够编辑他们的一些用户信息(他们的姓名和电子邮件等)。我创建了一个这样的模型:
App.Person = DS.Model.extend({
first_name: DS.attr(),
last_name: DS.attr(),
full_name: function() {
return this.get('first_name') + ' ' + this.get('last_name');
}.property('first_name', 'last_name')
});
App.User = App.Person.extend({
name: DS.attr('string'), // Actually their primary email.
customer: DS.belongsTo('customer', {async: true }),
teacher: DS.belongsTo('teacher', {async: true }),
roles: DS.attr(),
type: DS.attr()
});
我正在使用this couchdb adapter。
使用this.currentModel.save();
保存模型时,保存效果很好,但是所有这些couchdb _user
的其他属性都消失了,因为我没有在我的模型中定义它们:
derived_key
iterations
password_scheme
salt
这使得该用户无法登录。我知道我可以在我的模型上定义它们,但随后它们都会被拉到浏览器上,因为这些是安全必不可少的信息,看起来是个好主意。
有关如何在不暴露所有敏感信息的情况下获取所需行为的任何想法?或者由于良好的加密算法,这些信息不像我想的那么敏感吗?
Couchdb结果表明它不支持选择性更新。您必须提供整个对象,因为它将显示在最新版本中,如this SO question所示