使用knex,bookshelf将功能添加到sqlite3

时间:2017-01-07 06:48:02

标签: node.js sqlite knex.js bookshelf.js

我在开发范围内使用postgresql,它有函数调用" uuid_generate_v4()" 在测试范围中,我使用sqlite3但是迁移代码不起作用,因为缺少" uuid_generate_v4()"。 我可以重新解决这个问题吗?

<batch:job id="couponToggleActivation" job-repository="jobRepository">
    <batch:step id="couponActivation">
        <batch:tasklet ref="couponToggleActivation">

        </batch:tasklet>
    </batch:step>
</batch:job>
  

&#34;如果不存在则创建表&#34;通知&#34; (&#34; id&#34; char(36)默认为uuid_generate_v4(),&#34; created_at&#34; datetime,&#34; updated_at&#34; datetime,&#34; type&#34; varchar(255) ,&#34;摘要&#34; varchar(255),&#34; text&#34; varchar(255),&#34; actionText&#34; varchar(255),&#34; actionUrl&#34; varchar( 255),&#34;收件人&#34; char(36),外键(&#34;收件人&#34;)引用&#34;用户&#34;(&#34; id&#34;),主键(&#34; id&#34;)) - SQLITE_ERROR:near&#34;(&#34 ;:语法错误&#34;

1 个答案:

答案 0 :(得分:0)

由于@ mu-is-too-short评论,无论如何我都不建议这样做,但这是如何做到的:

let uuidGenerationRaw = connection.client.config.client === 'sqlite3' ? 
  `(lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6))))` :
  `uuid_generate_v4()`;

connection.schema.createTableIfNotExists('notification', (table) => {
  table.uuid('id').primary().defaultTo(connection.raw(uuidGenerationRaw));
  // ... rest of the columns
}),
相关问题