如何使用 Keystone.js 添加 Array 类型的虚拟属性?

2024-01-08

这是我的模型的代码:“Info”及其造成问题的 tokens 属性。

var keystone = require('keystone'),
    Types = keystone.Field.Types;
var Info = new keystone.List('Info');
Info.add({
    title: { type: String, required: true, initial: true },
    subtitle: { type: String, initial: true },
    content: { type: Types.Markdown, height: 500, initial: true },
    author: { type: Types.Relationship, ref: 'User', initial: true },
    date: { type: Types.Date, default: Date.now, initial: true },
    published: { type: Boolean, default: false, initial: true },
    tokens: { type: Array, virtual: true, noedit: true, collapse: true }
});

Info.defaultColumns = 'title, author, date|15%, published|15%'
Info.register();

运行应用程序时我得到:

Error: Unrecognised field constructor: function Array() { [native code] }
at List.field (/Users/bobmoff/Dropbox (Mobiento)/IMGNRY/Nordea/dev/code/rantebevis-cms/node_modules/keystone/lib/list.js:315:10)
at List.<anonymous> (/Users/bobmoff/Dropbox (Mobiento)/IMGNRY/Nordea/dev/code/rantebevis-cms/node_modules/keystone/lib/list.js:200:16)
at List.<anonymous> (/Users/bobmoff/Dropbox (Mobiento)/IMGNRY/Nordea/dev/code/rantebevis-cms/node_modules/keystone/lib/list.js:191:5)
at List.<anonymous> (/Users/bobmoff/Dropbox (Mobiento)/IMGNRY/Nordea/dev/code/rantebevis-cms/node_modules/keystone/lib/list.js:230:5)
at Function._.each._.forEach (/Users/bobmoff/Dropbox (Mobiento)/IMGNRY/Nordea/dev/code/rantebevis-cms/node_modules/keystone/node_modules/underscore/underscore.js:82:22)
at List.add (/Users/bobmoff/Dropbox (Mobiento)/IMGNRY/Nordea/dev/code/rantebevis-cms/node_modules/keystone/lib/list.js:204:4)
at Object.<anonymous> (/Users/bobmoff/Dropbox (Mobiento)/IMGNRY/Nordea/dev/code/rantebevis-cms/models/infos.js:4:6)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)

我不确定您打算用令牌存储/做什么,所以如果这不能回答您的问题,请澄清:)

我猜你的意思是:

  • an 数组路径 http://mongoosejs.com/docs/api.html#schema-array-js存储在数据库中,或者
  • a 虚拟财产 http://mongoosejs.com/docs/guide.html其值不被存储,而是在运行时计算。

两者都可以通过修改 mongoose 来实现schema直接,而不是使用 Keystoneadd方法上的List.

要添加数组路径(例如,您可以存储通过保存过程中生成的字符串标记数组),您可以这样做:

var keystone = require('keystone'),
    Types = keystone.Field.Types;

var Info = new keystone.List('Info');
Info.add({
    title: { type: String, required: true, initial: true },
    subtitle: { type: String, initial: true },
    content: { type: Types.Markdown, height: 500, initial: true },
    author: { type: Types.Relationship, ref: 'User', initial: true },
    date: { type: Types.Date, default: Date.now, initial: true },
    published: { type: Boolean, default: false, initial: true }
});

Info.schema.add({
    tokens: { type: [String] }
});

Info.defaultColumns = 'title, author, date|15%, published|15%';
Info.register();

要创建虚拟属性,您可以使用如下的 getter 来指定它:

Info.schema.virtual('tokens', function() {
    var tokens = [];
    // calculate tokens somehow
    return tokens;
});

通过访问架构,您可以绕过 Keystone 的列表,这意味着这些字段不会显示在管理 UI 中。有an issue https://github.com/JedWatson/keystone/issues/204在管理 UI 中添加对自定义模板的支持,这在将来将允许这样做。

还有一个问题数组字段类型 https://github.com/JedWatson/keystone/issues/13,因此,如果您现在将字符串存储在数组中,则在实现该功能后,您将能够将其包含在管理 UI 中。

与此相关的是,猫鼬提供的所有功能都可以通过模式获得,因此您也可以定义自定义方法、静态和预/后保存挂钩等内容。有关猫鼬模式的更多信息,请查看guide http://mongoosejs.com/docs/guide.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Keystone.js 添加 Array 类型的虚拟属性? 的相关文章

随机推荐

  • 在 CDN 上托管 Javascript/CSS 文件类似于 Google 托管 jQuery [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有任何主机 或者我是否可以在 Google 上托管我的文件 JS 和 CSS 以便它们被缓
  • 层命中测试仅在触摸层的下半部分时返回层

    我在图层支持的视图上有一个子图层 子图层的内容设置为图像引用并且是 25x25 矩形 当调用 TouchBegan 和 TouchMoved 方法时 我在超级层上执行命中测试 事实上 如果子层被触摸 命中测试方法确实会返回子层 但前提是图像
  • 终止管道中的上一个命令

    我正在运行这样的模拟 waf run scratch myfile awk f filter awk 我怎样才能杀死waf命令尽快filter awk检测到发生了某些事情 例如 在读取特定行之后 我无法改变waf or myfile 我只能
  • PHP 和 X.509 身份验证 - 检查证书颁发者

    我试图在我的网站上设置一个特定页面 只有经过 X 509 身份验证的人才能访问 问题是 我希望所有拥有由某个机构颁发的匹配证书的客户都可以使用它specific中间CA 我打算在一个自生成的根CA下有几个中间CA 但只有一个特定中间CA颁发
  • WCF 跟踪上未找到配置评估上下文警告

    我有一组托管在 NET 4 应用程序上的 WCF 服务 我手动创建 ServiceHost 类并开始侦听 TCP 端口 一切都按预期工作 但在服务器端的 WCF 跟踪中 我收到以下警告 未找到配置评估上下文 XML 跟踪如下
  • 强制执行 M-M 关系的触发器

    假设我有以下架构 DEPARTMENT DepartmentName BudgetCode OfficeNumber Phone EMPLOYEE EmployeeNumber FirstName LastName Department P
  • 正则表达式在一行上查找 A 而不是 B

    我正在寻找一个正则表达式来搜索我的 python 程序以查找其中的所有行foo 但不是bar 作为关键字参数传递到方法中 我正在尝试前瞻和后瞻断言 但运气不佳 有什么帮助吗 Thanks 如果你有一个字符串foo您要查找的字符串和另一个字符
  • 无法通过 CMake 链接 Boost 1.63.0

    我想做的是 正如你可以从标题中猜到的那样 通过 CMake 链接 Boost 库 我正在使用 CLion 编写跨平台代码 所以我没有其他机会 我确信我正确构建了所有内容 因为当我在 Visual Studio 中使用它时 它完全可以正常工作
  • 使用 python opencv 跟踪白色

    我想使用网络摄像头和 python opencv 跟踪白色 我已经有了跟踪蓝色的代码 frame cap read hsv cv2 cvtColor frame cv2 COLOR BGR2HSV define range of blue
  • 有没有办法在触发 lambda 之前过滤 AWS DynamoDb Stream?

    因此 我们有几个 lambda 来监听数据库上的更改 在每个 lambda 中 我们必须在一开始就进行过滤 因为这个特定的 lambda 不关心所有更改 只关心特定的更改 更明确地说 我们正在应用事件源 并且 lambda 应该是事件处理程
  • android中的tab时如何刷新ListView

    我的应用程序有三个选项卡ListView显示在每一个里面 如何编写刷新代码ListView当在选项卡之间单击时 Override public void onTabChanged String tabId if tabId tab 1 re
  • 日期功能以 mm/dd/yy 显示日期

    我正在尝试使用 VB 脚本获取 mm dd yy 格式的日期 但我找不到任何功能来满足要求 有人可以帮助我吗 我喜欢使用 NET stringbuilder 因为我可以通过调整格式说明符而不是使用字符串操作来动态切换格式 wscript e
  • 将存储过程和其他变量插入临时表

    我有一个存储过程和 3 个变量 我需要将它们全部插入临时表中的同一行 这可能吗 我试过 INSERT INTO Temp Ad B C SPInt SELECT Ad B C EXEC sp XYZ A B C 但这是行不通的 最简单的方法
  • Chart.js 为刻度添加填充

    我需要在 x 轴和 y 轴上添加填充 这个问题 如何在 Chart js 中的 Graph 和 X Y Scale 之间添加填充 https stackoverflow com questions 32095839 how to add p
  • Adsense 的自定义点击跟踪

    我需要在点击广告时识别我的用户 例如 当用户A在线时 我需要知道他是点击广告单元的人 当使用我自己的广告时 这是小菜一碟 使用 URL 重定向 但是 现在我们计划切换到 Adsense 它通过 javascript 呈现广告 因此我无法在那
  • Akka Http - 如何将 ResponseEntity 解组到 CustomClass?

    我正在使用 Akka Http 向第 3 方 API 发出请求 响应是 application json 我想使用 Akka Http 将它们转换为自定义案例类 我想做这样的事情 val request RequestBuilding Ge
  • 如何使用 Chrome 扩展更改当前选项卡的标题

    我想使用扩展名更改选项卡的标题 实际上 我在使用时遇到了困难 chrome tabs get 函数 选项卡 如何使用上面的功能呢 还有其他方法可以直接更改标题吗 chrome tabs query active true windowId
  • 如何在 Linux 中将“find”的结果通过管道传输到 mv

    如何通过管道将 查找 在 Linux 中 的结果移动到不同的目录 这是我到目前为止所拥有的 find name article mv backup 但它还不对 我收到错误缺少文件参数 因为我没有指定文件 因为我试图从管道获取它 find n
  • 为什么从数据源中删除项目时,DGV 会导致未捕获的异常?

    我有一个带有 DataGridView 的 WinForms 应用程序 该应用程序的 DataSource 属性设置为 BindingSource 反过来又具有itsDataSource 设置为 BindingList 一切工作正常 直到我
  • 如何使用 Keystone.js 添加 Array 类型的虚拟属性?

    这是我的模型的代码 Info 及其造成问题的 tokens 属性 var keystone require keystone Types keystone Field Types var Info new keystone List Inf