如何获得Keystone.js中的关系模型

时间:2016-05-17 08:13:44

标签: javascript mongodb relationship keystonejs

所以我试着去找代词'来自' Sentence'的模型来自' TestGenerator'的模型模型。我有自己的身份,但没有模特。

TestGenerator模型

sudo gem install -n /usr/local/bin sass

句子模型

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

TestGenerator.add({
    title: { type: String, required: true },
    sentences: { type: Types.Relationship, ref: 'Sentence', many: true },
});

TestGenerator.register();

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

Ponoun模型

Sentence.add({
    title: { type: String, required: true },
    pronouns: { type: Types.Relationship, ref: 'Pronoun', many: true },
    verbs: { type: Types.Relationship, ref: 'Verb', many: true },
});

Sentence.relationship({ ref: 'TestGenerator', path: 'sentences' });

Sentence.register();

我的控制器

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

Pronoun.add({
    english: { type: String },
    russian: { type: String }
});

Pronoun.relationship({ ref: 'Sentence', path: 'pronouns' });

Pronoun.register();

" locals.data.englishSentence"返回

view.on('init', function (next) {

    var q = keystone.list('TestGenerator').model.findOne({
        slug: locals.filters.test_genetation,
    }).populate('sentences');

    q.exec(function (err, result) {
        locals.testGenerator = result;
        locals.current_sentence = result.sentences[0];
        locals.data.englishSentence = locals.current_sentence.pronouns;
        console.log(locals.data.englishSentence);
        next(err);
    });
});

那么我该如何解决呢?别了解。

2 个答案:

答案 0 :(得分:0)

这与猫鼬有关,实际上与Keystone无关。猫鼬没有提供深度人口,你需要一个单独的插件,例如mongoose-deep-populate

答案 1 :(得分:0)

您是否尝试在pronouns来电中明确包含populate()

var q = keystone.list('TestGenerator').model.findOne({
    slug: locals.filters.test_genetation,
})
  .populate('sentences sentences.pronouns')
  .exec(function (err, result) {
    ...
  });