Express 急切地加载与Knex和Objective.js关联的数据

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

我有一个使用Postgresql的Express api用于数据存储,Knex/Objective用于查询和建模

我有两个模型用户和帖子s.t.用户有很多帖子,帖子属于用户

我试图将关联的用户对象返回到特定的post,如post.User,但出现了一个错误

以下是我的反对模型:

基本模型:

</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);
});