Прежде всего, подумайте о настройке вашей схемы.column
- это действительно ужасное имя для столбца базы данных ... как вы уже обнаружили, это вызовет всевозможные недоразумения!
Однако Knex обычно выводит имена с обратными галочками в выводе, что следует избегатьзарезервированное слово вопроса.Это на самом деле не ваша проблема.То, что вы видите, является результатом попытки выполнить запрос с массивом в нем:
req.db.from('offences').select('area', rows)
Здесь rows
- это массив, который может быть или не быть пустым.Это результат предыдущего запроса.
Я подозреваю, что вы ищете что-то более похожее (догадываюсь, потому что я не знаю, какова ваша схема):
db.from("offence_columns")
.select("column")
.where("pretty", "=", req.params.offence)
.then(rows => {
if (rows.length === 0) {
res.json({ error: false, message: "No cities matched." });
}
req.db
.from("offences")
// This assumes that `offence_columns` has an `area` column
.where("area", "=", rows[0].area)
.then(areas => {
res.json({ Error: false, Message: "Success", city: areas[0] });
});
});
Здесь все еще есть ряд проблем.С одной стороны, что если любой запрос может вернуть более одного результата?Кроме того, вам, вероятно, лучше использовать объединение в первую очередь:
db
.select('city')
.from('offence_columns')
.join('offences', 'offence_columns.area', '=', 'offences.area')
.where('pretty', '=', req.params.offence)
Однако, это все догадки, не зная, как выглядит ваша схема.