Javascript 在Keystonejs部分视图中使用预定义的模型数据
目前,我创建了一个keystone模型,格式如下:Javascript 在Keystonejs部分视图中使用预定义的模型数据,javascript,mongodb,keystonejs,Javascript,Mongodb,Keystonejs,目前,我创建了一个keystone模型,格式如下: var keystone = require('keystone'); var SiteSettings = new keystone.List('SiteSetting', { map: { name: 'siteName' }, nocreate: true, noedit: false, nodelete: true, singular:'SiteSetting', plural: 'Si
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();
然后我转到keystone后端,创建了一个新的站点设置对象
在默认模板上,我使用的是如下所示的局部视图:
<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);
});
};
然后可以使用页脚中的siteName
<div class="row">{{ siteSetting.siteName }}</div>
{{siteSetting.siteName}
是的,您可以在中间件中加载全局站点设置
// 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);
});
};
然后可以使用页脚中的siteName
<div class="row">{{ siteSetting.siteName }}</div>
{{siteSetting.siteName}