我正在尝试使用skygear-SDK-JS https://github.com/SkygearIO/skygear-SDK-JS在两种记录类型之间创建一对一的关系,并遵循https://docs.skygear.io/guides/cloud-db/data-types/js/指南使用Reference保存记录。正如指南中所写的,Skygear服务器将为我创建外键约束。
但是,我不知道如何使用Reference调用skygear.query接口。
例如,使用从指南中复制的以下代码。
const note1 = new Note({
heading: 'Specification',
content: 'This is first section',
});
const note2 = new Note({
heading: 'Specification page 2',
content: 'This is second section',
});
note1.nextPage = new skygear.Reference(note2);
skygear.publicDB.save([note2, note1]);现在我想要找到Note,这个nextPage的heading是Specification page 2,我应该如何构造query对象?
发布于 2017-08-28 14:06:48
要使用引用查询Skygear记录,只需构造一个在引用列上具有equalTo谓词的查询对象,如下所示:
let query = new skygear.Query(Note);
query.equalTo('nextPage', new skygear.Reference({
id: 'note/uuid-of-note2'
}));
skygear.publicDB.query(query).then((notes) => {
console.log(notes[0]); // You should got note1
});在你的用例中,下面的代码应该可以工作。
let query = new skygear.Query(Note);
query.equalTo('heading', 'Specification page 2');
skygear.publicDB.query(query).then((notes) => {
let refQuery = new skygear.Query(Note);
refQuery.equalTo('nextPage', new skygear.Reference(notes[0]));
skygear.publicDB.query(refQuery).then((result) => {
console.log(result);
});
});https://stackoverflow.com/questions/45911516
复制相似问题