2

モデルアイテムを作成した人のユーザーIDを持つ「admin」という非表示のフィールドタイプを追加しようとしています。これはローカルでは正常に機能しますが、何らかの理由でサーバーでは機能しません。これが私がしたことです。おそらく、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/keystone/templates/fields/admin

form.jade と initial.jade テンプレートを追加

4

1 に答える 1