Почему я не могу установить false (0) в качестве значения по умолчанию для моей таблицы, используя Knex? - PullRequest
0 голосов
/ 29 января 2020

Я использовал Knex с узлом / express для создания своей базы данных, и я столкнулся с проблемой, когда при установке значения по умолчанию для логического значения всегда возвращается ноль. (с использованием sqlite)

exports.up = async function(knex) {
    await knex.schema.createTable("users", (table) => {
        table.increments()
        table.boolean("admin")
            .notNullable()
            .defaultTo(false) // this is throwing an error.  Not defaulting to false.
    })
};

Я также пытался использовать 0 вместо false, потому что я знаю, что обычно по умолчанию 1 и 0 для true и false, но он все равно возвращает ноль, независимо от того, если я поставлю true / ложь || 1 / 0.

Кто-нибудь видит проблему в том, почему по умолчанию используется значение null, а не true или false?

1 Ответ

0 голосов
/ 29 января 2020

Драйвер SQlite не поддерживает автоматическое преобразование javascript логическое значение -> 0/1. Он также не преобразует batabase-boolean -> js true / false, поскольку sqlite вообще не имеет логического типа данных, но вместо него использует целое число.

https://www.sqlite.org/datatype3.html

table.boolean("admin")
            .notNullable()
            .defaultTo(0)

должно работать, но если вы собираетесь использовать sqlite в качестве основной базы данных, вы можете рассмотреть возможность использования целочисленного типа вместо логического.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...