【问题标题】:Keystone.js Number fieldtype tweakKeystone.js 数字字段类型调整
【发布时间】:2014-10-28 00:47:15
【问题描述】:

我正在尝试向我的 keystone events 模型添加一个类似 id 的列。 我有以下

// models/Event.js
var keystone = require('keystone'),
  Types = keystone.Field.Types;

var Event = new keystone.List('Event');

Event.add({
  FB_event_id:    { type: Types.Number, required: true, initial: true },
  name:           { type: Types.Text },
  FB_event_name:  { type: Types.Text },
  description:    { type: Types.Textarea },
  start_time:     { type: Types.Datetime },
  end_time:       { type: Types.Datetime },
  is_date_only:   { type: Types.Boolean },
  location:       { type: Types.Text },
  owner_name:     { type: Types.Text },
  updated_time:   { type: Types.Datetime },
  venue_name:     { type: Types.Text }, // typically given if lat/long data isn't
  venue_city :    { type: Types.Text },
  venue_lat :     { type: Types.Number },
  venue_long :    { type: Types.Number },
  venue_state :   { type: Types.Text },
  venue_street :  { type: Types.Text },
  venue_zip :     { type: Types.Number },
  cover_photo:    { type: Types.S3File }
});

Event.register();

在管理 UI 中,虽然我看到 FB_event_id270,385,519,824,039 更多的是数量而不是标识号。如何删除这些逗号?使用不同的 FieldType? 无论如何可以访问猫鼬ObjectId 字段类型吗? http://mongoosejs.com/docs/schematypes.html 我认为那将是完美的。

这纯粹是一个美学问题(也许是语义问题)。 id 不带逗号地存储在数据库中。

http://keystonejs.com/docs/database/#fieldtypes-number

【问题讨论】:

    标签: mongoose keystonejs


    【解决方案1】:

    您可以通过指定 format 选项来控制这一点,在您的情况下,您希望将其设置为 false 以完全禁用格式化:

    FB_event_id:    { type: Types.Number, format: false, required: true, initial: true }
    

    (我刚刚更新了文档,特别提到您可以将此选项设置为 false 以完全禁用格式化)

    ObjectId 字段类型不是您想要的;这些被Relationship 字段类型用于链接到数据库中的其他文档,并且应该只用于存储Mongo ObjectID。任何其他值都会导致错误。

    虽然我个人经常将String 字段用于ID 类型的字段,它与Number 字段一样有效,并且减少了与在Javascript 中解析数字相关的意外行为的可能性。

    【讨论】:

      猜你喜欢
      • 2014-09-28
      • 2021-04-06
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多