Express 急切地加载与Knex和Objective.js关联的数据
我有一个使用Postgresql的Express api用于数据存储,Knex/Objective用于查询和建模 我有两个模型用户和帖子s.t.用户有很多帖子,帖子属于用户 我试图将关联的用户对象返回到特定的post,如post.User,但出现了一个错误 以下是我的反对模型: 基本模型:Express 急切地加载与Knex和Objective.js关联的数据,express,knex.js,objection.js,Express,Knex.js,Objection.js,我有一个使用Postgresql的Express api用于数据存储,Knex/Objective用于查询和建模 我有两个模型用户和帖子s.t.用户有很多帖子,帖子属于用户 我试图将关联的用户对象返回到特定的post,如post.User,但出现了一个错误 以下是我的反对模型: 基本模型: </src/models/BaseModel.js> const { Model } = require('objection'); class BaseModel extends Model
</src/models/BaseModel.js>
const { Model } = require('objection');
class BaseModel extends Model {
$beforeInsert() {
const now = new Date().toISOString();
this.created_at = now;
this.updated_at = now;
}
$beforeUpdate() {
const now = new Date().toISOString();
this.updated_at = now;
}
}
module.exports = BaseModel;
下面是错误跟踪:
Running on localhost:8000
节点:32230未处理PromisejectionWarning:ValidationError:表达式中的未知关系用户
在Function.createValidationError/Users/dariusgoore/development/writer-app/writeboard-express-api/node_-modules/objective/lib/model/model.js:397:12
在findRelationsToFetch/Users/dariusgoore/development/writer app/WriteBoard express api/node_modules/objective/lib/queryBuilder/operations/eager/WhereInEagerOperation.js:166:24
在WhereInEagerOperation.onBuild/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/queryBuilder/operations/eager/WhereInEagerOperation.js:36:30
在QueryBuilder.callOperationMethod/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/QueryBuilder/QueryBuilderOperationSupport.js:345:33
在forEachOperation.op/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/queryBuilder/QueryBuilderOperationSupport.js:437:14
在QueryBuilder.forEachOperation/Users/dariusgoore/development/writer-app/writeboard-express-api/node_-modules/objective/lib/QueryBuilder/QueryBuilder-operationsupport.js:282:37
在QueryBuilder.executeOnBuild/Users/dariusgoore/development/writer-app/writeboard-express-api/node\u-modules/objective/lib/QueryBuilder/QueryBuilder-operationsupport.js:435:10
在callOnBuildHooks/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/queryBuilder/queryBuilder.js:1363:11
在doExecute/Users/dariusgoore/development/writer-app/writeboard-express-api/node_-modules/objective/lib/queryBuilder/queryBuilder.js:1253:13
在Bluebird.try.then/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/queryBuilder/queryBuilder.js:573:19
从以前的事件:
在QueryBuilder.execute/Users/dariusgoore/development/writer app/WriteBoard express api/node_modules/objective/lib/QueryBuilder/QueryBuilder.js:573:8
在QueryBuilder.then/Users/dariusgoore/development/writer app/WriteBoard express api/node_modules/objective/lib/QueryBuilder/QueryBuilder.js:490:26
在进程中。_tickCallback internal/process/next_tick.js:68:7
节点:32230未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于抛出不带catch块的异步函数内部,或者拒绝未使用.catch处理的承诺。拒绝id:2
节点:32230[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。
^[[1;2Cnode:32230未处理PromisejectionWarning:ValidationError:表达式中的未知关系用户
在Function.createValidationError/Users/dariusgoore/development/writer-app/writeboard-express-api/node_-modules/objective/lib/model/model.js:397:12
在findRelationsToFetch/Users/dariusgoore/development/writer app/WriteBoard express api/node_modules/objective/lib/queryBuilder/operations/eager/WhereInEagerOperation.js:166:24
在WhereInEagerOperation.onBuild/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/queryBuilder/operations/eager/WhereInEagerOperation.js:36:30
在QueryBuilder.callOperationMethod/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/QueryBuilder/QueryBuilderOperationSupport.js:345:33
在forEachOperation.op/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/queryBuilder/QueryBuilderOperationSupport.js:437:14
在QueryBuilder.forEachOperation/Users/dariusgoore/development/writer-app/writeboard-express-api/node_-modules/objective/lib/QueryBuilder/QueryBuilder-operationsupport.js:282:37
在QueryBuilder.executeOnBuild/Users/dariusgoore/development/writer-app/writeboard-express-api/node\u-modules/objective/lib/QueryBuilder/QueryBuilder-operationsupport.js:435:10
在callOnBuildHooks/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/queryBuilder/queryBuilder.js:1363:11
在doExecute/Users/dariusgoore/development/writer-app/writeboard-express-api/node_-modules/objective/lib/queryBuilder/queryBuilder.js:1253:13
在Bluebird.try.then/Users/dariusgoore/development/writer app/writeboard express api/node_modules/objective/lib/queryBuilder/queryBuilder.js:573:19
从以前的事件:
在QueryBuilder.execute/Users/dariusgoore
/开发/writer应用程序/writeboard express api/node_modules/objective/lib/queryBuilder/queryBuilder.js:573:8
在QueryBuilder.then/Users/dariusgoore/development/writer app/WriteBoard express api/node_modules/objective/lib/QueryBuilder/QueryBuilder.js:490:26
在进程中。_tickCallback internal/process/next_tick.js:68:7
节点:32230未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于抛出不带catch块的异步函数内部,或者拒绝未使用.catch处理的承诺。拒绝id:4确定解决了此问题
将路线查询更改为:
router.get('/', async (req, res) => {
const posts = await Post
.query().eager('user');
res.json(posts);
});
const express = require('express');
const User = require('../models/User');
const Post = require('../models/Post');
let router = express.Router();
router.get('/', async (req, res) => {
const posts = await Post
.query().eager('users');
res.json(posts);
});
module.exports = router;
Running on localhost:8000
router.get('/', async (req, res) => {
const posts = await Post
.query().eager('user');
res.json(posts);
});