2017-04-18 55 views
1

如果我添加一本书到一个关系小袋实例(已包含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) 
}); 

结果是这样的:

{ 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加入作者1的书,即使对象指定Winny the Pooh属于作者1.是否需要手动更新作者书籍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)); 

回答

1

简短的回答是否定的。这issue contains the answer details。我将粘贴下面的最终工作脚本。

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)); 
相关问题