无法从注册表中解析模型用户



因此,我按照书架上的指南,使用书籍和摘要示例创建了一个简单的一对一关系。因此,我创建了如下的图书模型:

const dbConfig = require('../data/db');
const bookshelf = require('bookshelf')(dbConfig)
const Book = bookshelf.model('Book', {
tableName: 'books',
summary() {
return this.hasOne('Summary')
}
})
module.exports = Book

我按照以下内容创建了摘要模型:

const dbConfig = require('../data/db');
const bookshelf = require('bookshelf')(dbConfig)
const Summary = bookshelf.model('Summary', {
tableName: 'summaries',
book() {
return this.belongsTo('Book')
}
})

module.exports = Summary

为了进行测试,我创建了一些种子,将一些项目插入数据库。所以我可以用这个做一些测试。

exports.seed = async function(knex) {
// Deletes ALL existing entries
await knex('books').del()
await knex('books').insert([
{id: 1, name: 'A series of unfortunate events'},
{id: 2, name: 'Sherlock Holmes'},
{id: 3, name: 'Harry potter'}
]);
await knex('summaries').del()
await knex('summaries').insert([{ id:1,details:'This is a really funny book. you gotta read this by lemony snicket',book_id:1
},
{ id:2,details:'This is a really witty and intelligent book of holmes. He is an amazing detective after all. written by sir arthur conan doyale',book_id:2
},
{ id:3,details:'This is a written by jk rowling',book_id:3
}

])

};

我正在使用快捷路线转到特定页面。当我在没有任何复杂查询的情况下执行fetchAll时,它会返回所有内容。但当我试图从书中只获取一个特定的摘要id时,它似乎不起作用。

在v1/routes/summaryRoutes.js 中

const express = require('express')
const router=express.Router()
const Summary  = require('../../model/summary')

router.get('/',async(req,res)=>{
let books = await new  Summary({id:1}).fetch({withRelated: ['books']})
.then(function(){
res.json(books.toJSON());
})
.catch(Summary.NotFoundError,function(err){
res.send('empty response. :/');
console.log('caught unhandled exception.. so happy :) ')
console.log(err)

});

})

module.exports = router

我一直得到以下错误代码:

错误:没有在模型上定义图书。在EagleRelation。(C:\Users\bitcot\work\nodejs\node_modules\bookforf\lib\base\areacher.js:50:15)在EagleRelation.tryCatcher(C:\Users\bitcot\work\nodejs\node_modules\bluebird\js\release\util.js:16:23)在EagleRelation.fetch(C:\Users\bitcot\work\nodejs\node_modules\bluebird\js\release\method.js:15:34)在Child_handleEagle(C:\Users\bitcot\work\nodejs\node_modules\bookfor\lib\model.js:1526:56)

这个错误看起来像是一个简单的打字错误。它基本上是告诉您,当您尝试通过withRelated获取Summary模型时,在该模型上没有名为books的关系。

您已将Summary模型上的关系定义为book

const Summary = bookshelf.model('Summary', {
tableName: 'summaries',
book() {
return this.belongsTo('Book')
}
})

然而,当您试图获取此关系时,您将其称为books(作为s)

{withRelated: ['books']}

由于这看起来是一对多的关系,我认为单数版本是正确的,所以你只需要将你的withRelated更改为book,你就应该很好。

相关内容

  • 没有找到相关文章

最新更新