有没有人有一个很好的例子,在keystonejs中为关系字段添加名称?现在它只保存一个id,所以如果我需要在玉器模板中显示那些字段名称,我还需要查询该关系模型.理想情况下是这样的:
var keystone = require('keystone'),
Types = keystone.Field.Types;
/**
* Titles Model
* =============
*/
var Title = new keystone.List('Title');
Title.add({
name: { type: String, required: true, initial: true },
room: { type: Types.Relationship, initial: true, required: true, ref: 'Screening', addNew: false },
businessUnit: { type: Types.Relationship, initial: true, required: true, ref: 'BusinessUnit', addNew: false }
});
Title.defaultSort = '-createdAt';
Title.defaultColumns = 'name, room';
Title.register();
Run Code Online (Sandbox Code Playgroud)
会像这样保存:
title = {
name: 'name',
room: 3141234123442,
businessUnit: {
name: 'business name',
_id: 123412341234 …Run Code Online (Sandbox Code Playgroud) 我是keystone的新手,我正在尝试部署一个简单的网站模板来熟悉这项技术,我已经下载了所有的necassary模块,并创建了一个包含所有依赖项的keystone.js文件和package.json文件.但是,当我尝试在终端中运行keystone.js时,我得到以下内容:
Error: Invalid Configuration
CloudinaryImage fields (Gallery.heroImage) require the "cloudinary config" option to be set.
See http://keystonejs.com/docs/configuration/#cloudinary for more information.
Run Code Online (Sandbox Code Playgroud)
我已经使用cloudinary建立了一个帐户并使用了npm install来确保它安装在系统中,但显然无法找到配置.我假设有一个简单的解决方案,我只需要将我的configuartion字段放在代码的正确位置,但我似乎无法找到有关在何处插入我的帐户详细信息的任何说明.任何帮助将不胜感激,如果我省略了任何重要的代码,请告诉我.
keystone.js:
require('dotenv').load();
// Require keystone
var keystone = require('keystone'),
handlebars = require('express3-handlebars');
// Initialise Keystone with your project's configuration.
// See http://keystonejs.com/guide/config for available options
// and documentation.
keystone.init({
'name': 'Tech Website',
'brand': 'Tech Website',
'less': 'public',
'static': 'public',
'favicon': 'public/favicon.ico',
'views': 'templates/views',
'view engine': 'hbs',
'custom engine': handlebars.create({
layoutsDir: 'templates/views/layouts',
partialsDir: 'templates/views/partials',
defaultLayout: 'default',
helpers: new require('./templates/views/helpers')(), …Run Code Online (Sandbox Code Playgroud) 我想创建一个Category可以容纳另一个的模型category,但是参考字段存在问题,我可以将当前类别设置为自己
有关如何实现分层类别的任何建议?是否KeystoneJS有"不相等"的过滤器?另一方面,也许我可以为它自己设置默认参考字段,它就像一个根......
我目前的代码如下:
var keystone = require('keystone'),
Types = keystone.Field.Types;
var PageCategory = keystone.List('PageCategory', {
map: { name: 'name' },
autokey : { from: 'name', path: 'key'}
});
PageCategory.add({
name: { type: String, required: true, unique: true},
image: { type: Types.CloudinaryImage, label: "Category Image"},
description : { type: Types.Html, wysiwyg: true},
parent: { type: Types.Relationship, ref: "PageCategory", label: "Parent category"}
});
PageCategory.relationship({ ref: "PageCategory", path: "parent"});
PageCategory.register();
尝试花一些时间研究此问题,但是keystone.js上的文档对此没有多大帮助。谷歌搜索使我进入一些关于在核心Keystone中实现React并在生成器中创建选项的github讨论,但该工作似乎尚未准备就绪。
所以我认为唯一的选择是手动将Keystone项目设置为React,但是我没有足够的信息来开始这条道路。如何使用React在Keystone中使用自定义模板?
我有一个加载公寓列表并显示它们的路线:
app.get( '/condo-list', middleware.loadCondoList, routes.views.condolist );
Run Code Online (Sandbox Code Playgroud)
loadCondoList中间件调用CondoBuilding模型并在res.locals上设置结果:
exports.loadCondoList = function loadCondoList( req, res, next ) {
console.log( 'request url: ' + req.url );
console.log( 'getting condo buildings...' );
CondoBuilding.model
.find()
.exec( ( err, condos ) => {
if ( err ) {
// pass error along
next( err );
} else {
// add CondoBuildings to locals
res.locals.condoBuildings = condos;
next();
}
});
};
Run Code Online (Sandbox Code Playgroud)
对数据库的调用成功,页面按预期呈现.但是,由于某种原因,路线运行了两次.控制台输出如下:
request url: /condo-list
getting condo buildings...
GET /condo-list 304 344.532 ms
request url: /condo-list
getting …Run Code Online (Sandbox Code Playgroud) 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 }
});
Run Code Online (Sandbox Code Playgroud)
该字段data必须是Mixed类型,但遗憾的是没有匹配的KeystoneJS类型.
任何想法如何在keystone.List对象中完成?
我正在尝试为集合编写 KeystoneJS (Mongoose) 模型Contest。这些是我的实际模型的简化版本:
比赛
Contest.add({
title: {
type: Types.Text,
initial: true,
required: true,
index: true
},
state: {
type: Types.Select,
options: ['draft', 'started', 'finished', 'resolved'],
default: 'draft'
},
awards: {
idContest: { /* <--- copy of _id */
type: Types.Text,
hidden: true
},
jury: {
winner: {
type: Types.Relationship,
ref: 'Entry',
many: false,
filters: {
'contest.id': ':idContest', /* <--- filter */
'contest.state': 'admited'
}
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
入口
Entry.add({
title: {
type: Types.Text,
initial: true,
required: …Run Code Online (Sandbox Code Playgroud) 在文档中不清楚如何使用现有的Keystone模型来公开在Keystone.js应用程序中返回json的API端点.我希望能够使用Keystone公开REST API端点,并能够使用Keystone CMS功能通过与这些端点交互来管理内容.谢谢!
我有一个基于keystone的站点和一个完全静态的站点.
我想将静态集成到第一个中.所有对"/"的请求都将服务于静态请求,但"/ resources"下的请求将服务于keystone站点.
基本上:
"/" would serve the static folder 'site'
"/resources" would serve the keystone app
Run Code Online (Sandbox Code Playgroud)
目前我的结构是:
public
| - keystone
| - site
Run Code Online (Sandbox Code Playgroud)
我的keystone静态选项设置为'public'
'static': 'public'
Run Code Online (Sandbox Code Playgroud)
我该如何设置这些路线?
我正在考虑以这种方式使用中间件:
app.use("/", express.static(__dirname + "/site"));
app.use("/resources", express.static(__dirname + "/keystone"));
Run Code Online (Sandbox Code Playgroud)
但是我怎么能在keystone中做到这一点?
我在网址中有一些图片。我可以获得文件属性,属性也包括图像的宽度和高度。我想以字节为单位获取大小。
我正在尝试使用 fs 模块获取大小,如下所示,但它不适用于 url,尽管它适用于本地文件夹中的文件路径。
var stats = fs.statSync(url);
var fileSizeInBytes = stats["size"]
Run Code Online (Sandbox Code Playgroud) keystonejs ×10
node.js ×7
mongoose ×3
express ×2
cloudinary ×1
config ×1
file ×1
javascript ×1
mongodb ×1
reactjs ×1
routes ×1