0

我正在尝试使用 skygear-SDK-JS https://github.com/SkygearIO/skygear-SDK-JS在两种记录类型之间创建一对一的关系,并遵循指南https://docs.skygear。 io/guides/cloud-db/data-types/js/以保存记录Reference。如指南中所述,Skygear 服务器将为我创建外键约束。

但是,我找不到如何skygear.query使用Reference.

例如,使用从指南复制的以下代码。

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的,我应该如何构造查询对象?headingSpecification page 2

4

1 回答 1

0

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);
  });
});
于 2017-08-28T06:06:48.023 回答