在此示例中,为什么keystonejs在启动时抛出未知列表错误?

时间:2019-01-19 22:38:56

标签: keystonejs

我使用梯形失真创建了一个带有两个列表的小项目:User和Post。管理员界面没有问题,但是查询任一列表都会引发错误(在本例中为帖子)

ReferenceError: Unknown keystone list "Post"

检查我的mongo数据库显示有一个对应的集合,我能够从Admin UI正常添加和编辑。我的帖子代码Post.js如下:

var keystone = require("keystone");
var Types = keystone.Field.Types;

var Post = new keystone.List("Post", {
  autokey: { path: "slug", from: "title", unique: true },
  map: { name: "title" },
  defaultSort: "-createdAt"
});

Post.add({
  title: { type: String, required: true },
  state: {
    type: Types.Select,
    options: "draft, published, archived",
    default: "draft"
  },
  author: { type: Types.Relationship, ref: "User" },
  createdAt: { type: Date, default: Date.now },
  publishedAt: Date,
  content: {
    brief: { type: Types.Html, wysiwyg: true, height: 150 },
    extended: { type: Types.Html, wysiwyg: true, height: 400 }
  }
});

Post.defaultColumns = "title, state|20%, author, publishedAt|15%";
Post.register();

这是直接从keystone documentation复制粘贴的

下面的代码段getPosts.js是第2行上发生错误的地方。

var keystone = require("keystone");
var Post = keystone.list("Post");

module.exports = function(req, res) {
  return res.json(Post.model.find({}));
}; 

我认为我没有偏离文档太远,有人可以发现我在语法上做得不正确吗?如果有人需要查看更多内容以获取更好的主意,我有一个仓库here,它位于keystone目录中。

1 个答案:

答案 0 :(得分:2)

我发现了问题所在。初始化梯形失真时,我在导入模型之前先导入了路线,这就是为什么它们(模型)在运行时从未设置的原因,从而导致梯形失真引发错误。如果您遇到类似的问题,请确保仔细检查导入模型/路线/等的顺序。