首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将默认值设置为模型(Sails.js)

将默认值设置为模型(Sails.js)
EN

Stack Overflow用户
提问于 2016-11-06 00:45:53
回答 1查看 833关注 0票数 0

我开始学习Sails.js,我想知道是否有一种更简单的方法来从会话变量中设置模型中的默认值?我使用Waterlock进行身份验证,并在会话变量(如req.session.user_id )中设置user_id。我有一个消息模型,我想将'from'字段默认为这个会话变量。在Sails.js中有办法做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2016-11-06 14:33:40

如果您使用的是Sail的默认ORM ( Waterline ),那么模型属性有一个defaultsTo选项。提供的值可能是一个函数。你可以看看水道文件

样本模型

代码语言:javascript
复制
module.exports = {
  attributes: {
    description: {
      type: 'string',
      defaultsTo: 'No description.'
    },
    email: {
      type: 'email',
      required: true,
      unique: true
    },
    alias: {
      type: 'string',
      defaultsTo: function(){
        return this.email;
      }
    },
  }
};

如果提供的值是函数,则对此函数的调用绑定到create中的值。

对于Model.create(values)...,如果别名为null/未定义,则使用alias = defaultsTo.call(values)获取别名的值。

因此,要使用req.session.user_id,您可能必须在创建过程中包含它。Model.create({session: req.session,...})。我不太确定,因为我不使用水锁。我不认为这是最好的方法。

根据我的经验,在使用sails mysql等适配器时,这些额外的值会被忽略,但是如果您使用sails磁盘进行开发,那么您可能会看到这些额外的值是持久化的。您可能需要在持久化之前删除它们。

代码语言:javascript
复制
  beforeCreate: function(values, cb){
    delete values['session'];
    cb();
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40444877

复制
相关文章

相似问题

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