Knex: سؤال بخصوص استخدام then () مع Knex.js و Postgres

تم إنشاؤها على ١٦ يناير ٢٠١٤  ·  3تعليقات  ·  مصدر: knex/knex

أحاول استخدام ثم () لربط جدول الإنشاء وإدخال الصفوف.
تم إنشاء الجدول ولكن لم يحدث الإدراج (لم يتم اكتشاف أي خطأ).
هل يستطيع أحد أن يخبرني أين أخطأت؟

شكر
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 (ه) ؛
}) ؛

question

التعليق الأكثر فائدة

يجب عليك إما إدراج عبارة إدراج return الخاصة بك knex أو إضافة معالجات إليها (باستخدام then أو catch / caught ) ، وإلا فأنت تقوم فقط بإنشاء مثيل builder ولكنك لا تقوم بتنفيذ الاستعلام فعليًا. عند استدعاء طرق مثل insert ، select ، from وما إلى ذلك - بشكل أساسي كل طريقة في منشئ الاستعلام - ستقوم فقط بتعديل حالتها الداخلية ، ولكن لن تنفذ الاستعلام فعليًا . سيحدث ذلك فقط عند إضافة معالج واحد أو أكثر إلى المثيل باستخدام then ، catch / caught ، lastly / finally ، tap أو exec ، لأن هذا سيؤدي إلى إنشاء Promise الفعلي ، والذي يرسل الاستعلام إلى عميل قاعدة البيانات.

ال 3 كومينتر

يجب عليك إما إدراج عبارة إدراج return الخاصة بك knex أو إضافة معالجات إليها (باستخدام then أو catch / caught ) ، وإلا فأنت تقوم فقط بإنشاء مثيل builder ولكنك لا تقوم بتنفيذ الاستعلام فعليًا. عند استدعاء طرق مثل insert ، select ، from وما إلى ذلك - بشكل أساسي كل طريقة في منشئ الاستعلام - ستقوم فقط بتعديل حالتها الداخلية ، ولكن لن تنفذ الاستعلام فعليًا . سيحدث ذلك فقط عند إضافة معالج واحد أو أكثر إلى المثيل باستخدام then ، catch / caught ، lastly / finally ، tap أو exec ، لأن هذا سيؤدي إلى إنشاء Promise الفعلي ، والذي يرسل الاستعلام إلى عميل قاعدة البيانات.

Knex و Bookshelf رائعة. شكرا جزيلا

  • MN

في 16 كانون الثاني (يناير) 2014 ، الساعة 13:17 ، كتب يوهانس لومبي [email protected] :

يجب عليك إما إرجاع جملة إدراج knex ، أو إضافة معالجات إليها (باستخدام ثم أو catch / catch) ، وإلا فأنت تقوم فقط بإنشاء نسخة منشئ ولكنك لا تنفذ الاستعلام فعليًا. عند استدعاء طرق مثل insert ، حدد من الخ. - في الأساس كل طريقة في منشئ الاستعلام - ستقوم فقط بتعديل حالتها الداخلية ، ولكنها لن تنفذ الاستعلام فعليًا. سيحدث ذلك فقط عندما تضيف معالجًا واحدًا أو أكثر إلى المثيل باستخدام إذن ، catch / catch ، أخيرًا / أخيرًا ، انقر أو exec ، لأن هذا سيؤدي بعد ذلك إلى إنشاء Promise الفعلي ، الذي يرسل الاستعلام إلى عميل قاعدة البيانات.

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub.

على الرحب و السعة!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات