2015-06-17 23 views
2

我是node.js以及keystone的新手。 我想创建一个称为页面的新模型,它与从keystone默认的帖子相同。如何从管理部分在keystone.js中创建页面

我创建

新模型代码

var pages = new keystone.List('pages', { 
    map: { name: 'title' }, 
    autokey: { path: 'slug', from: 'title', unique: true } 
}); 

pages.add({ 
    title: { type: String, required: true }, 
    state: { type: Types.Select, options: 'draft, published, archived', default: 'published', index: true }, 
    author: { type: Types.Relationship, ref: 'User', index: true }, 
    publishedDate: { type: Types.Date, index: true, dependsOn: { state: 'published' } }, 
    image: { type: Types.LocalFile, dest: 'public/uploads'}, 
    content: { 
     brief: { type: Types.Html, wysiwyg: true, height: 150 }, 
     extended: { type: Types.Html, wysiwyg: true, height: 400 } 
    }, 
}); 

pages.schema.virtual('content.full').get(function() { 
    return this.content.extended || this.content.brief; 
}); 

pages.defaultColumns = 'title, state|20%, author|20%, publishedDate|20%'; 
pages.register(); 

然后我创建了中间件

exports = module.exports = function(req, res) { 

    var view = new keystone.View(req, res), 
     locals = res.locals; 

    // Init locals 
    locals.section = 'pages'; 
    locals.data = { 
     pages: [] 
    }; 

    // Load the pages 
    view.on('init', function(next) { 

     var q = keystone.list('pages').paginate({ 
       page: req.query.page || 1, 
       perPage: 10, 
       maxPages: 10 
      }) 
      .where('state', 'published') 
      .sort('-publishedDate'); 
     q.exec(function(err, results) { 
      locals.data.pages = results; 
      next(err); 
     }); 

    }); 

    // Render the view 
    view.render('pages'); 
}; 

也创造

{ label: 'pages',  key: 'pages',  href: '/pages' } 

路线这一切我都做了创建模型....让我知道我失踪了。 当我通过如下代码调用这个从pages.jade文件:

data.pages.title 

这说明我什么。即使没有显示任何错误。 任何帮助将不胜感激。

回答

2

q.exec()回调中的results是一个数组,您将其分配给local.data.pages。因此你的Jade模板中的data.pages是一个数组,而data.pages.title将是null

您需要迭代返回的页面。下面的示例将呈现页面标题,假定返回的结果数组不为空。

each page in data.pages 
    p= page.title 
相关问题