Keystonejs - Запрос предметов в отношениях
Я хочу написать запрос для фильтрации содержимого, для которого установлены отношения.
Laptopy.js
var keystone = require('keystone');
var Types = keystone.Field.Types;
var Laptop = new keystone.List('Laptop', {
map: { name: 'nazwa' },
autokey: { path: 'slug', from: 'nazwa', unique: true },
});
Laptop.add({
nazwa:{type: String, required: true},
grafika:{type: Types.Relationship, ref: 'KartaGraficzna'}
});
Laptop.register();
KartaGraficzna.js
var keystone = require('keystone');
var Types = keystone.Field.Types;
var KartaGraficzna = new keystone.List('KartaGraficzna', {
map: { name: 'nazwa' },
autokey: { path: 'slug', from: 'nazwa', unique: true },
});
KartaGraficzna.add({
nazwa:{type: String, required: true},
producent:{type: Types.Select, options: 'nVidia, AMD, Intel'},
});
KartaGraficzna.relationship({ ref: 'Laptop', path: 'grafika' });
KartaGraficzna.register();
QUERY
var Laptop = keystone.list('laptops');
Laptop.model.find()
.populate('grafika')
.where('grafika.nazwa', 'GTX980')
.exec(function (err, laptop) {
locals.data.laptopy = laptop;
next(err);
});
Я знаю, что этот запрос неверен, и это не так работает. Может кто-нибудь сказать мне, как это сделать? Буду благодарен за вашу помощь
1 ответ
Очень неясная формулировка проблемы.=> Отфильтруйте контент, для которого установлены отношения.
Что я должен понять из этого. и это тоже, когда вы приводите противоречивый пример кода.?
В любом случае, если я пойду словами filter the content that has relationships set
, Я предполагаю, что вы не хотите видеть те ноутбуки, для которых установлена графика.
Так что мой ответ, просто сравните с нулем.
Laptop.model.find()
.where('grafika', null)
.exec(function (err, laptop) {
locals.data.laptopy = laptop;
next(err);
});