Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一对多关系包实例是否总是必须在两端进行更新?_Javascript_Node.js_Pouchdb_Relational Pouch - Fatal编程技术网

Javascript 一对多关系包实例是否总是必须在两端进行更新?

Javascript 一对多关系包实例是否总是必须在两端进行更新?,javascript,node.js,pouchdb,relational-pouch,Javascript,Node.js,Pouchdb,Relational Pouch,如果我将一本书添加到一个关系邮袋实例(该实例已经包含一个id为1的作者,该作者拥有书6和书7),如下所示: 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)

如果我将一本书添加到一个关系邮袋实例(该实例已经包含一个id为1的作者,该作者拥有书6和书7),如下所示:

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)
});
然后按如下方式记录作者查询:

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)
});
结果是:

{ authors: 
   [ { name: 'George R. R. 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
被添加到author 1的书中,即使该对象指定
Winny the Pooh
属于author 1。我是否需要手动用书的id更新author one
Winny the Pooh

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

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 R. R. 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 R. R. 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));