首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止jugglingDB中的构造函数设置模型属性

防止jugglingDB中的构造函数设置模型属性
EN

Stack Overflow用户
提问于 2013-10-05 21:10:08
回答 1查看 148关注 0票数 1

在使用JugglingDB的节点应用程序中给定一个用户模型

代码语言:javascript
复制
User = schema.define('User', {
  name      : String,
  email     : String,
  API_KEY   : String,
  created   : {type: Date, default: Date.now},
});

我希望API_KEY属性为“只读”。因此,以下数据:

代码语言:javascript
复制
var data = {
  name     : 'Test account',
  email    : 'test@test.com',
  API_KEY  : 'Some key' 
}

被接受为:

代码语言:javascript
复制
var data = {
  name     : 'Test account',
  email    : 'test@test.com'
}

在:

代码语言:javascript
复制
var user = new User(data);

因此,只有服务器才能为用户创建API_KEY。这个是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2013-10-12 01:21:22

你可以通过使用钩子来做到这一点。特别是,您可以使用beforeCreatebeforeUpdate挂钩,每当创建新用户或更新其属性时,都会执行这些挂钩。

例如,您可以在创建用户时分配服务器生成的API密钥,并使用以下挂钩确保以后不会更改该密钥:

代码语言:javascript
复制
User.beforeCreate = function(next, data) {
    data.API_KEY = server_generate_api_key();
    next();
};

User.beforeUpdate = function(next, data) {
    delete data.API_KEY;
    next();
};

或者,您可以查看beforeSave挂钩。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19198188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档