标签: keystonejs

将项目名称添加到keystone.js中的关系字段

有没有人有一个很好的例子,在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)

mongoose node.js keystonejs

5
推荐指数
1
解决办法
1981
查看次数

无效的Cloudinary Configuartion

我是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)

config file node.js cloudinary keystonejs

5
推荐指数
1
解决办法
4937
查看次数

keystoneJS与自我的关系

我想创建一个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();

keystonejs

5
推荐指数
1
解决办法
780
查看次数

如何使用React在Keystone.js中使用自定义模板?

尝试花一些时间研究此问题,但是keystone.js上的文档对此没有多大帮助。谷歌搜索使我进入一些关于在核心Keystone中实现React并在生成器中创建选项的github讨论,但该工作似乎尚未准备就绪。

所以我认为唯一的选择是手动将Keystone项目设置为React,但是我没有足够的信息来开始这条道路。如何使用React在Keystone中使用自定义模板?

node.js reactjs keystonejs

5
推荐指数
1
解决办法
1608
查看次数

KeystoneJS中间件在使用Model.find()调用MongoDB时运行两次

我有一个加载公寓列表并显示它们的路线:

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)

mongodb node.js express keystonejs

5
推荐指数
1
解决办法
280
查看次数

KeystoneJS模型中的Mongoose模式类型

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对象中完成?

mongoose keystonejs

4
推荐指数
1
解决办法
2818
查看次数

按 id 过滤 KeystoneJS 关系

我正在尝试为集合编写 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)

mongoose node.js keystonejs

4
推荐指数
1
解决办法
2156
查看次数

为Keystone使用设置API端点的正确方法是什么?

在文档中不清楚如何使用现有的Keystone模型来公开在Keystone.js应用程序中返回json的API端点.我希望能够使用Keystone公开REST API端点,并能够使用Keystone CMS功能通过与这些端点交互来管理内容.谢谢!

keystonejs

4
推荐指数
2
解决办法
4511
查看次数

如何在keystone中提供静态站点?

我有一个基于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中做到这一点?

routes node.js express keystonejs

4
推荐指数
1
解决办法
2140
查看次数

如何在nodejs中使用url获取文件大小

我在网址中有一些图片。我可以获得文件属性,属性也包括图像的宽度和高度。我想以字节为单位获取大小。

我正在尝试使用 fs 模块获取大小,如下所示,但它不适用于 url,尽管它适用于本地文件夹中的文件路径。

var stats = fs.statSync(url);
var fileSizeInBytes = stats["size"]
Run Code Online (Sandbox Code Playgroud)

javascript node.js keystonejs

4
推荐指数
1
解决办法
1万
查看次数