أحاول استخدام ثم () لربط جدول الإنشاء وإدخال الصفوف.
تم إنشاء الجدول ولكن لم يحدث الإدراج (لم يتم اكتشاف أي خطأ).
هل يستطيع أحد أن يخبرني أين أخطأت؟
شكر
MN
الوعد var = يتطلب ('بلوبيرد') ؛
var Knex = يتطلب ('knex') ؛
Knex.knex = Knex.initialize ({
العميل: "pg" ،
الإتصال: {
...
} ،
التصحيح: صحيح
}) ؛
var knex = يتطلب ('knex'). knex ؛
knex.schema.createTable ("القسم" ، الوظيفة (جدول) {
table.increments ('department_id'). Primary (). notNullable ()؛
table.string ('department_name'، 80) .unique (). notNullable () ؛
table.string ('building_name'، 40) ؛
}). ثم (الوظيفة () {
console.log ('تم إنشاء جدول القسم') ؛
knex ("القسم"). أدخل (
[{department_name: 'Nano Technology'، building_name: 'block-A'}،
{department_name: 'Mechanical Engineering'، building_name: 'block-C'}] ،
"معرف القسم"
) ؛
}). ثم (الوظيفة () {
console.log ("الأقسام المدرجة") ؛
}). catch (function (e) {
console.log (ه) ؛
}) ؛
يجب عليك إما إدراج عبارة إدراج return
الخاصة بك knex
أو إضافة معالجات إليها (باستخدام then
أو catch
/ caught
) ، وإلا فأنت تقوم فقط بإنشاء مثيل builder
ولكنك لا تقوم بتنفيذ الاستعلام فعليًا. عند استدعاء طرق مثل insert
، select
، from
وما إلى ذلك - بشكل أساسي كل طريقة في منشئ الاستعلام - ستقوم فقط بتعديل حالتها الداخلية ، ولكن لن تنفذ الاستعلام فعليًا . سيحدث ذلك فقط عند إضافة معالج واحد أو أكثر إلى المثيل باستخدام then
، catch
/ caught
، lastly
/ finally
، tap
أو exec
، لأن هذا سيؤدي إلى إنشاء Promise
الفعلي ، والذي يرسل الاستعلام إلى عميل قاعدة البيانات.
Knex و Bookshelf رائعة. شكرا جزيلا
في 16 كانون الثاني (يناير) 2014 ، الساعة 13:17 ، كتب يوهانس لومبي [email protected] :
يجب عليك إما إرجاع جملة إدراج knex ، أو إضافة معالجات إليها (باستخدام ثم أو catch / catch) ، وإلا فأنت تقوم فقط بإنشاء نسخة منشئ ولكنك لا تنفذ الاستعلام فعليًا. عند استدعاء طرق مثل insert ، حدد من الخ. - في الأساس كل طريقة في منشئ الاستعلام - ستقوم فقط بتعديل حالتها الداخلية ، ولكنها لن تنفذ الاستعلام فعليًا. سيحدث ذلك فقط عندما تضيف معالجًا واحدًا أو أكثر إلى المثيل باستخدام إذن ، catch / catch ، أخيرًا / أخيرًا ، انقر أو exec ، لأن هذا سيؤدي بعد ذلك إلى إنشاء Promise الفعلي ، الذي يرسل الاستعلام إلى عميل قاعدة البيانات.
-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub.
على الرحب و السعة!
التعليق الأكثر فائدة
يجب عليك إما إدراج عبارة إدراج
return
الخاصة بكknex
أو إضافة معالجات إليها (باستخدامthen
أوcatch
/caught
) ، وإلا فأنت تقوم فقط بإنشاء مثيلbuilder
ولكنك لا تقوم بتنفيذ الاستعلام فعليًا. عند استدعاء طرق مثلinsert
،select
،from
وما إلى ذلك - بشكل أساسي كل طريقة في منشئ الاستعلام - ستقوم فقط بتعديل حالتها الداخلية ، ولكن لن تنفذ الاستعلام فعليًا . سيحدث ذلك فقط عند إضافة معالج واحد أو أكثر إلى المثيل باستخدامthen
،catch
/caught
،lastly
/finally
،tap
أوexec
، لأن هذا سيؤدي إلى إنشاءPromise
الفعلي ، والذي يرسل الاستعلام إلى عميل قاعدة البيانات.