Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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 如何在Bookshelf.js中进行嵌套插入_Javascript_Bookshelf.js - Fatal编程技术网

Javascript 如何在Bookshelf.js中进行嵌套插入

Javascript 如何在Bookshelf.js中进行嵌套插入,javascript,bookshelf.js,Javascript,Bookshelf.js,如何将这样的对象插入到Book和Page两个表中 var book = { name: 'Hello', author: 'World', pages: [{ pagetitle: 'intro', book: 8 }, { pagetitle: 'chaptessr1', book: 8 }] }; 我认为你可能在寻找某种捷径,但不要认为有捷径: var Promise = require

如何将这样的对象插入到Book和Page两个表中

var book = {
    name: 'Hello',
    author: 'World',
    pages: [{
        pagetitle: 'intro',
        book: 8
    }, {
        pagetitle: 'chaptessr1',
        book: 8
    }]
};

我认为你可能在寻找某种捷径,但不要认为有捷径:

var Promise = require('bluebird');
var Book = bookshelf.Model.extend({
    tableName: 'books'
});
var Page = bookshelf.Model.extend({
    tableName: 'pages'
});
var Pages = bookshelf.Collection.extend({
    model: Page
});

Book.forge({name: 'Hello', author: 'World'}).save()
    .then(function(book) {
        var pages = Pages.forge([
            {pagetitle: 'intro', book: book.id},
            {pagetitle: 'chatessr1', book: book.id}
        ]);

        return pages.invokeThen('save', null);
    }).then(function(){
        // now all the pages and the book should be saved
    });

以下是指向书架文档中最干净方式的链接:

它将是这样的:

return Promise.map(pages, (page) => book.related('pages').create(page));

我在找一条捷径。就像它可以使用withRelated参数从多个表中检索嵌套数据一样,我也可以进行插入吗?我认为没有快捷方式。这不应该包装在事务中吗?