gpt4 book ai didi

node.js - Knex Js 返回与原始 SQL 不同的输出

转载 作者:太空宇宙 更新时间:2023-11-04 00:42:40 24 4
gpt4 key购买 nike

我有两张 table 。一个是类别表,另一个是带有类别外键的项目表(一个类别可以有多个项目)

我正在尝试公开以下代码中的所有项目

router.route('/projects')
.get(function(req,res){
//knex('projects').select(['projects.id','projects.name','projects.category_id','categories.name']).innerJoin('categories','projects.category_id','categories.id')
knex.from('projects').innerJoin('categories','projects.category_id','categories.id')
.then(function(collection){

console.log(collection);
res.json({
error:false,
data: collection
})
})
.catch(function(err){
res.json({
error:true,
data:{
message:err.message
}
})
})
})

两个 knex 语句都返回类似于下面的截断输出

{
"error": false,
"data": [
{
"id": 1,
"name": "Music",
"category_id": 1,
"created_at": 1458126413858
},
{
"id": 2,
"name": "Science",
"category_id": 2,
"created_at": 1458126413858
}
]
}

但是,原始 SQL 似乎是正确的

select * from "projects" inner join "categories" on "projects"."category_id" = "categories"."id"

select "projects"."id", "projects"."name", "projects"."category_id", "categories"."name" from "projects" inner join "categories" on "projects"."category_id" = "categories"."id"

在sqlite上单独运行上述语句似乎返回整个表结果

knex 语句哪里出了问题?

作为引用,这是架构

项目表

var table = (table) => {
table.increments().primary();
table.string('name');
table.integer('category_id').references('categories.id');
table.timestamp('created_at').defaultTo(Date.now());
}

类别表

var table = (table) => {
table.increments().primary();
table.string('name');
table.timestamp('created_at').defaultTo(Date.now());
}

最佳答案

通过使用列名的别名来解决这个问题,如下所示

knex('projects').select(['projects.id as projectId','projects.name as projectName','projects.category_id','categories.name as categoryName']).innerJoin('categories','projects.category_id','categories.id')

关于node.js - Knex Js 返回与原始 SQL 不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36035539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com