كيفية إنشاء uuid جديد أو md5 عشوائي لحفظه في postgresql ، على سبيل المثال:
لكن "knex.raw ('uuid_generate_v4 ()') 'لا يعمل ، أتساءل كيف يمكنني إنشاء تجزئة عشوائية وحفظها تلقائيًا عند إنشاء سجل جديد؟
ويبدو أيضًا أن uuid-v4 لا يمكنه إنشاء عشوائي بسبب الترحيل الثابت وغير المتغير لكل طلب.
آسف أنا أدرس العقدة بسبب امتلاكها ومساعدتي الوحيدة هي google و github ، أشكركم على مساعدتكم.
ما هو السبب لماذا
لكن "knex.raw ('uuid_generate_v4 ()') '
لا يعمل؟ هل يعمل ذلك مع postgrsql عند محاولة استخدامه مع sql wirhout knex العادي؟
حاول أيضًا تشغيل الكود الخاص بك باستخدام DEBUG = knex: * مجموعة متغير evironment للحصول على مزيد من المعلومات حول ما يحدث مع استفساراتك.
anzileiro ، يجب ألا تستخدم حزمة uuis-v4
في عمليات الترحيل ، ولكن في نماذجك ، على سبيل المثال ، قبل حفظ نموذج جديد ، قم بتعيين الخاصية hash
إلى قيمة uuid()
و ثم احفظه
تحتاج إلى التأكد من توفر الامتداد:
knex.raw('create extension if not exists "uuid-ossp"')
ثم يمكنك أن تفعل
table.string('hash').defaultTo(knex.raw('uuid_generate_v4()'))
لا تنس الهجرة down
:
knex.raw('drop extension if exists "uuid-ossp"')
تحرير: يمكنك استخدام نوع uuid بدلاً من سلسلة عند استخدام pg ، على سبيل المثال:
await knex.schema.createTable('Users', t => {
t.uuid('id').defaultTo(knex.raw('uuid_generate_v4()'))
// ...
})
شكرا @ fl0w ، أغلقت القضية ☺️
شكرا يا شباب!
👍
التعليق الأكثر فائدة
تحتاج إلى التأكد من توفر الامتداد:
ثم يمكنك أن تفعل
لا تنس الهجرة
down
:تحرير: يمكنك استخدام نوع uuid بدلاً من سلسلة عند استخدام pg ، على سبيل المثال: