يتعلم هذا الأسبوع بشكل أساسي على تفاعل قاعدة بيانات NodeJS ، ونحن نستخدم قالب Jade لجعل موقع ويب تم تحديده معًا. أساسا ، واجهت العديد من المشاكل.
1. إصدار MongoDB منخفض جدًا
NPM خطأ! غير متوافق مع نظام التشغيل أو بنيةك: [email protected]
0.9.9 يدعم فقط أنظمة Linux و Darwin و FreeBSD ، ودعم أحدث إصدار من الفوز.
2. بعد قيام NodeJS بإدخال عملية إدراج: لا يمكن قراءة النتيجة
نسخة الكود كما يلي:
app.post ('/signup' ، function (req ، res ، next) {
// أدخل المستند
app.users.insert (req.body.user ، function (err ، doc) {
إذا (err) return next (err) ؛
res.redirect ('/login/' + doc [0] .email) ؛
}) ؛
}) ؛
المظهر هو أن إعادة التوجيه فشل ، والوضع الحقيقي هو أن إدراج قاعدة البيانات كان ناجحًا ولكن المستند فارغ ، ناهيك عن قيمة المستند [0]. والسبب هو أن عمليات مثل الإدراج يتم تنفيذها بشكل غير متزامن. لا تُرجع العمليات غير المتزامنة نتائجها بشكل افتراضي لتحديد ما إذا كانت تعمل بنجاح. يجب تنفيذ هذه الوظيفة عن طريق إضافة المعلمة الثالثة {Safe: Ture} ، وهي app.users.insert (req.body.user ، {safe: ture} ، function () {...}). بهذه الطريقة ، سيتم قراءة النتيجة بنجاح.
3. يظهر توصيل المتجر غير المحدد
نسخة الكود كما يلي:
Mongostore = مطلوب ('connect-mongo')
app.use (express.session ({
السر: الإعدادات.
المتجر: Mongostore الجديد ({
DB: الإعدادات
})
})) ؛
رمز المصدر على النحو الوارد أعلاه. يتم العثور على السبب أن وحدة Connect-Mongo يتم تقديمها بشكل مختلف بناءً على إصدارات مختلفة من Express. هناك أيضًا تذكير خاص في readme.md.
نسخة الكود كما يلي:
مع التعبير 4:
var session = require ('expression settion') ؛
var mongostore = require ('connect-mongo') (الجلسة) ؛
app.use (الجلسة ({
السر: الإعدادات. cookie_secret ،
المتجر: Mongostore الجديد ({
DB: الإعدادات. DB ،
})
})) ؛
مع التعبير <4:
var express = require ('Express') ؛
var mongostore = require ('connect-mongo') (express) ؛
app.use (express.session ({
السر: الإعدادات. cookie_secret ،
المتجر: Mongostore الجديد ({
DB: الإعدادات
})
})) ؛
للإصدارات المختلفة ، يرجى تعديلها وفقًا لذلك.
4. ملخص
بعد دراسة هذا الكتاب ، أعرف بعض خصائص NodeJS وموقع اللغة الأجنبية النشطة. كما زاد تواتر تحديثات بعض الأقسام الشائعة في العقدة من صعوبة التعلم ، بحيث يمكن اعتبار هذا الكتاب كتابًا تمهيديًا. بعد ذلك ، نخطط لتعلم إطار عمل الأشرعة الخلفية من خلال القتال العملي. يتم تسجيل المشكلات التي واجهتها أثناء الدراسة أيضًا في دفتر الملاحظات.