简体   繁体   English

Keystone JS findOne返回null

[英]Keystone js findOne returning null

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. 我正在使用KeystoneJS 4.0.0-beta.5版本,并且试图从我的模型之一加载某些数据,由于某种原因该模型返回null。 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 节点版本: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');
};

It turns out I had a typo in routes/index.js . 原来我在routes/index.js有一个错字。

Edit: I believe I just forgot to add this to routes/index.js . 编辑:我相信我只是忘记将其添加到routes/index.js

app.get('/event', routes.views.event);
app.get('/event/detail/:detail', routes.views.detail);

You have a typo. 你有错字

You are setting locals.data. 您正在设置locals.data。 details here: 详细信息在这里:

locals.data = {
    details: [],
};

...but are saving your result into locals.data. ...但是将您的结果保存到locals.data中。 detail here: 详细信息在这里:

q.exec(function (err, result) {
    locals.data.detail = result;
    console.log(result);
    next(err);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM