在此示例中,为什么 keystonejs 在启动时抛出未知列表错误?
Why is keystonejs throwing an unknown list error on startup in this example?
我用两个列表使用 keystone 做了一个小项目:User 和 Post。 Admin UI 没有给我任何问题,但查询任一列表都会引发错误(在本例中,对于 Posts)
ReferenceError: Unknown keystone list "Post"
检查我的 mongo 数据库显示有一个相应的集合,我可以从管理员 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();
复制粘贴的
以下代码片段,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
目录中。
我发现了问题所在。当我初始化 keystone 时,我在导入模型之前导入了路由,这就是为什么它们(模型)从未在运行时设置,导致 keystone 抛出错误。如果您遇到类似问题,请务必仔细检查导入顺序 models/routes/etc.
我用两个列表使用 keystone 做了一个小项目:User 和 Post。 Admin UI 没有给我任何问题,但查询任一列表都会引发错误(在本例中,对于 Posts)
ReferenceError: Unknown keystone list "Post"
检查我的 mongo 数据库显示有一个相应的集合,我可以从管理员 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();
复制粘贴的
以下代码片段,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
目录中。
我发现了问题所在。当我初始化 keystone 时,我在导入模型之前导入了路由,这就是为什么它们(模型)从未在运行时设置,导致 keystone 抛出错误。如果您遇到类似问题,请务必仔细检查导入顺序 models/routes/etc.