一对多的关系袋实例总是必须在两端更新?

如果我将一本书添加到关系包实例(其中已经包含id为1的作者具有书籍6和7),如下所示:

then(function() { return db.rel.save('book', { title: 'Winny the Pooh', id: 8, author: 1 }) 

然后logging作者的查询是这样的:

 }).then(function() { var result = db.rel.find('author', 1); result.then(function(data) { console.log(data) }); 

结果是这样的:

 { authors: [ { name: 'George RR Martin', books: [Object], id: 1, rev: '1-f07514693adc67c175bb1919b979dfcd' } ], books: [ { title: 'A Game of Thrones', author: 1, id: 6, rev: '1-a36627090c454eba8ded42464ecfd37a' }, { title: 'The Hedge Knight', author: 1, id: 7, rev: '1-1b725f45b6c9db0798a49f713dfaa5c6' } ] } 

它看起来不像Winny the Pooh被添加到作者1的书籍,即使该对象指定, Winny the Pooh属于作者1.我是否需要手动更新作者之一的书Winny the Pooh

我正在粘贴下面的完整testing脚本以供参考:

 var PouchDB = require('pouchdb'); PouchDB.plugin(require('relational-pouch')); var db = new PouchDB('mydb'); db.setSchema([ { singular: 'author', plural: 'authors', relations: { books: { hasMany: 'book' } } }, { singular: 'book', plural: 'books', relations: { author: { belongsTo: 'author' } } } ]); db.rel.save('author', { name: 'George RR Martin', id: 1, books: [6, 7] }).then(function() { return db.rel.save('book', { title: 'A Game of Thrones', id: 6, author: 1 }); }).then(function() { return db.rel.save('book', { title: 'The Hedge Knight', id: 7, author: 1 }); }).then(function() { return db.rel.save('book', { title: 'Winny the Pooh', id: 8, author: 1 }) }).then(function() { var result = db.rel.find('author', 1); result.then(function(data) { console.log(data) }); }).catch(console.log.bind(console)); 

简短的回答是没有。 这个问题包含答案的详细信息 。 我将粘贴下面的最终工作脚本。

  var PouchDB = require('pouchdb'); PouchDB.plugin(require('relational-pouch')); PouchDB.plugin(require('pouchdb-find')); var db = new PouchDB('mydb'); db.setSchema([ { singular: 'author', plural: 'authors', relations: { books: { hasMany: { type: 'book', options: { queryInverse: 'author' } } } } }, { singular: 'book', plural: 'books', relations: { author: { belongsTo: 'author' } } } ]); db.rel.save('author', { name: 'George RR Martin', id: 1 }).then(function() { return db.rel.save('book', { title: 'A Game of Thrones', id: 6, author: 1 }); }).then(function() { return db.rel.save('book', { title: 'The Hedge Knight', id: 7, author: 1 }); }).then(function() { return db.rel.save('book', { title: 'Winny the Pooh', id: 8, author: 1 }) }).then(function() { var result = db.rel.find('author', 1); return result.then(function(data) { console.log(data) }); }).catch(console.log.bind(console)); 
Interesting Posts