문제

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

var LeaderboardEntry = new keystone.List('leaderboardEntry', {
  autokey: { path: 'slug', from: 'publicKey playername', unique: false }
});

LeaderboardEntry.add({
  publicKey: { type: String, required: true, noedit: true },
  playername: { type: String, required: true },
  playerid: { type: String },
  points: { type: Number, required: true },
  /*data: { type: Mixed, required: false, unique: false },*/
  publishedDate: { type: Types.Date }
});

The field data needs to be of type Mixed but unfortunately there is not a matching KeystoneJS type.

Any ideas how this can be done within a keystone.List object?

도움이 되었습니까?

해결책

A while back I ran into the same issue and ran across this Twitter post .. It won't show up in the admin UI, but it's possible to add a Mongoose field type this way.

Add this after your code above:

LeaderboardEntry.schema.add({ data: mongoose.Schema.Types.Mixed });

다른 팁

You can define like this in your model file

var keystone = require('keystone');
var mongoose = require('mongoose'); // "npm i --save mongoose" of course
var Types = keystone.Field.Types;

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

FBEntry.add({
    type: { type: String, index: true },
    // data: mongoose.Schema.Types.Mixed    <--- define overhere will throw exception
});

FBEntry.schema.add({ data: mongoose.Schema.Types.Mixed }); // you should define outside .add()

FBEntry.defaultColumns = 'type, data';
FBEntry.register();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top