我正在尝试添加一个名为' admin'的隐藏字段类型。它只有创建模型项的人的用户ID。这在本地工作正常,但由于某种原因不能在服务器上工作。这是我做的,也许是因为我在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 /梯形/模板/场/管理员
添加了form.jade和initial.jade模板
答案 0 :(得分:1)
当你说“在服务器上”时,我会假设你指的是某些Node.js托管服务提供商(即Heroku,OpenShift等)。如果是这种情况并且它在本地工作,正如您所提到的,我怀疑您可能没有在Git中提交node_modules
文件夹,因此您实施的更改不会与其余代码一起上传到您的提供商。检查您的.gitignore
文件,查看其中列出的node_modules
。如果是,请从他的文件中删除node_modules
,提交并推送给您的提供商,您的应用应该像在本地一样在您的提供商上工作。
也就是说,我正在处理向KeystoneJS发送拉取请求(#490),该请求可选择添加并自动更新createdBy
,createdAt
,modifiedBy
和modifiedAt
到模型。我们目前正在讨论实施它的最佳方式,但我怀疑我的PR或其修改版本很快就会被提取并在不久的将来上市。