Reputation: 152
I am using KeystoneJS version 4.0.0-beta.5 and I am trying to load some data from one of my models which is returning null for some reason. I am able to load the data for all my other models, but this one is a bit tricker or I am overlooking something. Any and all help would be greatly appreciated.
Node version: 6.11.2
Model code
var keystone = require('keystone');
var Types = keystone.Field.Types;
var Event = new keystone.List('Event', {
autokey: {
path: 'slug',
from: 'title',
unique: true
},
map: {
name: 'title'
}
});
Event.add({
title: {
type: String,
required: true
},
info: {
type: Types.Html,
wysiwyg: true,
height: 300
},
form: {
type: Types.Boolean
}
});
Event.defaultColumns = 'title';
Event.register();
Route/View Code
var keystone = require('keystone');
exports = module.exports = function (req, res) {
var view = new keystone.View(req, res);
var locals = res.locals;
// Set locals
locals.section = 'event';
locals.filters = {
detail: req.params.detail,
};
locals.data = {
details: [],
};
// load event data
view.on('init', function (next) {
var q = keystone.list('Event').model.findOne({
slug: locals.filters.detail,
})
q.exec(function (err, result) {
locals.data.detail = result;
console.log(result);
next(err);
});
});
// Render the view
view.render('detail');
};
Upvotes: 0
Views: 564
Reputation: 152
It turns out I had a typo in routes/index.js
.
Edit: I believe I just forgot to add this to routes/index.js
.
app.get('/event', routes.views.event);
app.get('/event/detail/:detail', routes.views.detail);
Upvotes: 1
Reputation: 12089
You have a typo.
You are setting locals.data.details here:
locals.data = {
details: [],
};
...but are saving your result into locals.data.detail here:
q.exec(function (err, result) {
locals.data.detail = result;
console.log(result);
next(err);
});
Upvotes: 0