在keystone.js中添加自定义字段types

我正在尝试添加一个名为“admin”的隐藏字段,它只有创build模型项目的用户的用户标识。 这工作正常本地但由于某种原因不能在服务器上工作。 这是我做的,也许是因为我修改了keystone / lib文件内的文件?

/Models/Group.js

var keystone = require('keystone'), Types = keystone.Field.Types; /** * Group Collection Model * ============= */ var Group = new keystone.List('Group'); Group.add({ name: { type: String, required: true, initial: true }, createdAt: { type: Date, default: Date.now }, groupId: { type: Types.Admin, required: true, initial: true, default: 'placeholder' } }); Group.defaultColumns = 'name'; Group.register(); 

/ node_modules / keystone / lib / fieldTypes我添加了admin.js

  /*! * Module dependencies. */ var util = require('util'), utils = require('keystone-utils'), super_ = require('../field'); /** * Text FieldType Constructor * @extends Field * @api public */ function admin(list, path, options) { this._nativeType = String; this._underscoreMethods = ['crop']; admin.super_.call(this, list, path, options); } /*! * Inherit from Field */ util.inherits(admin, super_); /** * Crops the string to the specifed length. * * @api public */ admin.prototype.crop = function(item, length, append, preserveWords) { return utils.cropString(item.get(this.path), length, append, preserveWords); }; /*! * Export class */ exports = module.exports = admin; 

/node_modules/keystone/lib/fieldTypes/index.js

补充说:

 exports.Admin = require('./admin'); 

/ node_modules /梯形/模板/场/pipe理

添加了一个form.jade和initial.jade模板

       

网上收集的解决方案 "在keystone.js中添加自定义字段types"

当你说“在服务器上”,我会假设你的意思是在一些Node.js托pipe提供商(即Heroku,OpenShift等)。 如果是这种情况,并且在本地工作,就像您提到的那样,我怀疑您可能没有提交Git中的node_modules文件夹,因此您实施的更改不会与其他代码一起上载到提供程序。 检查您的.gitignore文件以查看node_modules是否列在那里。 如果是这样,从他的文件中删除node_modules ,提交并推送到你的提供者,你的应用程序应该像在本地一样工作在你的提供者上。

也就是说,我目前正在为KeystoneJS提供一个pull请求( #490 ),它可以select添加并自动更新createdBycreatedAtmodifiedBymodifiedAt到模型中。 目前我们正在讨论实施它的最佳方法,但是我怀疑我的公关或其修改后的版本很快就会在不久的将来被取消。