node.js - 我正在使用 node/express 和 pg 库与 PostgreSQL 进行通信。当我的模型返回数据时,属性是小写的。为什么?
问题描述
基本问题是,为什么要将属性更改job.companyHandle
为job.companyhandle
?
在我的Job
模型中,我有这个功能:
static async create({ title, salary, equity, companyHandle }) {
const duplicateCheck = await db.query(
`SELECT title
FROM jobs
WHERE title=$1 AND company_handle=$2`,
[title, companyHandle]);
if (duplicateCheck.rows[0])
throw new BadRequestError(`Duplicate job: ${title} at ${companyHandle}`);
const result = await db.query(
`INSERT INTO jobs
(title, salary, equity, company_handle)
VALUES ($1, $2, $3, $4)
RETURNING id, title, salary, equity, company_handle AS companyHandle`,
[
title,
salary,
equity,
companyHandle
],
);
const job = result.rows[0];
return job;
}
我对该函数的开玩笑测试代码如下所示:
describe("create", function () {
const newJob = {
title: "NJ1",
salary: 50000,
equity: "0.45",
companyHandle: "c3"
};
test("works", async function () {
let job = await Job.create(newJob);
expect(job).toEqual({ ...newJob, id: expect.any(Number) });
const result = await db.query(
`SELECT id, title, salary, equity, company_handle AS companyHandle
FROM jobs
WHERE title = 'NJ1'`);
expect(result.rows).toEqual([
{
id: expect.any(Number),
title: "NJ1",
salary: 50000,
equity: "0.45",
companyHandle: "c3"
},
]);
});
... another test ...
});
所以我尝试AS companyHandle
从 return 语句中删除并添加
job.companyHandle = job.company_handle;
delete job.company_handle;
在返回之前进入模型。在其他一些测试中,这会返回正确的companyHandle
属性,但在第一个测试用例中,它仍然以companyhandle
. 我不明白为什么它返回一个小写字母。
快速查看笑话结果:
create › works
expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 1
@@ -1,8 +1,8 @@
Array [
Object {
- "companyHandle": "c3",
+ "companyhandle": "c3",
"equity": "0.45",
"id": Any<Number>,
"salary": 50000,
"title": "NJ1",
},
另外,我知道这些代码可能没有必要,但是我看到太多没有足够上下文的帖子,所以我决定在过度共享方面犯错。
解决方案
正如评论中提到的,我犯了一个错误,没有双引号我的标识符。
我太专注于一个案例,错过了我没有重复引用的所有其他回报。
谢谢@Crontab 和@Adrian Klaver
推荐阅读
- javascript - 当所有人都断开连接时,如何删除临时语音通道?
- django - 无法显示图像django
- python - 如何修复:创建 tensorflow 文本摘要时出现“google.protobuf.message.DecodeError: Error parsing message”
- javascript - 使用 Debounced Scroll 事件固定元素以提高性能
- postgresql - 是否可以通过添加更多索引来加速此查询?
- php - PHP:如何只替换=而不替换<=和>=
- delphi - 构造函数在初始化类变量时抛出 eaccessviolation
- git - 什么是 git status 替代品!svn状态结果
- json - 如何根据上述jq数组中对象中的元素值选择/获取对象元素的(对象数组)键?
- nginx - 向上游发送请求时,nginx 失败(32:管道损坏),