Мы переносим проект с PHP на Node.js, используя Sails.js в качестве бэкэнд-фреймворка. Мы не можем изменить нашу базу данных и должны использовать существующую базу данных для этого проекта.
Если я оставлю migrate: "alter"
для вновь созданной модели, Sails по умолчанию сохранит поле id
как целое число.
Однако для нашей существующей базы данных id
полей в основном bigint
. Итак, я определил migrate: "safe"
и приступил к созданию модели.
Теперь проблема, с которой я сталкиваюсь, заключается в том, что когда маршруты blueprint возвращают результат, значение столбца id, которое должно быть возвращено в виде числа, вместо этого возвращается в виде строки. Вот пример:
[
{
"starttime": "07:00:00",
"endtime": "14:00:00",
"id": "1"
},
{
"starttime": "14:00:00",
"endtime": "22:00:00",
"id": "2"
},
{
"starttime": "22:00:00",
"endtime": "07:00:00",
"id": "3"
}
]
Как я могу решить эту проблему?
Вот моя модель:
module.exports = {
tableName: "timeslots",
autoCreatedAt: false,
autoUpdatedAt: false,
attributes: {
starttime: { type: "string", required: true },
endtime: { type: "string", required: true }
}
};
А вот определение таблицы postgresql
Table "public.timeslots"
Column | Type | Modifiers | Storage | Stats target | Description
-----------+--------+--------------------------------------------------------+----------+--------------+-------------
id | bigint | not null default nextval('timeslots_id_seq'::regclass) | plain | |
starttime | text | not null | extended | |
endtime | text | not null | extended | |
Indexes:
"idx_43504_primary" PRIMARY KEY, btree (id)
Referenced by:
TABLE "doctortimeslot" CONSTRAINT "doctortimeslot_ibfk_2" FOREIGN KEY (timeslot_id) REFERENCES timeslots(id) ON UPDATE CASCADE ON DELETE CASCADE