目前,我以以下格式创建了梯形校正模型:

var keystone = require('keystone');

var SiteSettings = new keystone.List('SiteSetting', {
    map: { name: 'siteName' },
    nocreate: true,
    noedit: false,
    nodelete: true,
    singular:'SiteSetting',
    plural: 'SiteSetting',
});

SiteSettings.add({
    siteName: { type: String, required: true },
    contactNumber: { type: String, required: false },
    facebookGroupUrl: { type: String, required: false },
    googlePlusUrl: { type: String, required: false }
});

SiteSettings.register();


然后我去了梯形失真后端,创建了一个新的“站点设置”对象。

在我的默认模板上,我正在使用这样的局部视图:

<body>
  <main>
    {{>header}}
    {{>footer}}
  </main>
</body>


这是我的页脚局部:

<div class="row">//I want to print my site name here</div>


但是我不知道如何在没有路线的情况下检索模型数据。因为是局部视图。

任何的想法 ?我该怎么办 ?我可以在middleware.js中做些什么

谢谢大家,。

最佳答案

是的,您可以在中间件中加载全局站点设置。

// routes/middleware.js

exports.initLocals = (req, res, next) => {
  const { locals } = res;

  // Load site settings from db
  keystone.list('SiteSettings').model.findOne().exec((err, result) => {
    locals.siteSetting = result;
    next(err);
  });
};



// routes/index.js

const { initLocals } = require('./middleware');
keystone.pre('routes', initLocals);


然后,您可以在页脚中使用siteName

<div class="row">{{ siteSetting.siteName }}</div>

关于javascript - 在Keystonejs局部 View 中使用预定义的模型数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53939649/

10-13 01:07