Ghiath Alkhatib نشر 16 أكتوبر 2020 أرسل تقرير مشاركة نشر 16 أكتوبر 2020 (معدل) مرحبا استخدم اطار express اريد تحويل Url مقالة من id الى title قمت بتثبت حزمة mongoose-slug-generator وقمت بتالي في ملف Post const mongoose = require('mongoose'); const Schema = mongoose.Schema; const slug = require('mongoose-slug-generator'); mongoose.plugin(slug); const PostSchema = new Schema({ title: { type: String, required: true }, slug: { type: String, slug: "title" } )}; و ملف router router.get('/:slug'); لكن Server توقف عن عمل يخبرني يوجد خطاء لا يذكر ماهو خطاء واين هل يوجد خطاء في طريقتي ! تم التعديل في 16 أكتوبر 2020 بواسطة Ghiath Alkhatib اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Yomna Raouf نشر 16 أكتوبر 2020 أرسل تقرير مشاركة نشر 16 أكتوبر 2020 هل يمكمنك إرفاق صورة للطرفية كاملة حتى نتمكن من مساعدتك بشكل أفضل. شكرا لك. اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 ayoubridouani نشر 16 أكتوبر 2020 أرسل تقرير مشاركة نشر 16 أكتوبر 2020 يمكنك فقط إستخدام الطريقة التالية التي تعتمد على regex: app.get(/(.+)\.html/, function(req, res, next) { res.redirect(req.params[0].substring(0, req.params[0].length - 5)); // -5 for length of '.html' }); حتى تستعمل الروابط على الشكل التالي: http://website.com/article_title_rewrited-article_id.html سترى المزيد من المعلومات من هنا عن rewrite url في express اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ghiath Alkhatib نشر 16 أكتوبر 2020 الكاتب أرسل تقرير مشاركة نشر 16 أكتوبر 2020 (معدل) بتاريخ 3 ساعات قال Yomna Raouf: هل يمكمنك إرفاق صورة للطرفية كاملة حتى نتمكن من مساعدتك بشكل أفضل. شكرا لك. وجدت مشكلة يعمل سيرفر الان بتاريخ 3 ساعات قال ayoubridouani: يمكنك فقط إستخدام الطريقة التالية التي تعتمد على regex: app.get(/(.+)\.html/, function(req, res, next) { res.redirect(req.params[0].substring(0, req.params[0].length - 5)); }); حتى تستعمل الروابط على الشكل التالي: http://website.com/article_title_rewrited-article_id.html سترى المزيد من المعلومات من هنا عن rewrite url في express لماذا لا يمكنني استخدام حزمة و هي مخصصة لهذا شيئ اعتقد مشكلتي بطرف العميل عند نقر على مقالة تظهر رسالة ٤٠٤ حيث مازال رابط هو id تم التعديل في 16 أكتوبر 2020 بواسطة Ghiath Alkhatib اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ghiath Alkhatib نشر 16 أكتوبر 2020 الكاتب أرسل تقرير مشاركة نشر 16 أكتوبر 2020 هذه حقول في قاعدة بيانات لماذا لم يظهر حقل slug اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ghiath Alkhatib نشر 16 أكتوبر 2020 الكاتب أرسل تقرير مشاركة نشر 16 أكتوبر 2020 (معدل) الان يظهر حقل و يظهر رابط كالمطلوب عنوان مقال لكن بعد نقر ليه يظهر هذا خطاء Cast to ObjectId failed for value "magic-flip-cards-solving-a-common-sizing-problem" at path "_id" for model "Post" تم التعديل في 16 أكتوبر 2020 بواسطة Ghiath Alkhatib اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ghiath Alkhatib نشر 16 أكتوبر 2020 الكاتب أرسل تقرير مشاركة نشر 16 أكتوبر 2020 اعتقد مشكلة بتعريف متغير postId exports.delails = (req, res, next) => { let postId = req.params.id; Post.findById(postId) .populate('author', 'name') .populate('comments.author', 'name') .then(post => { if (!post) throw createError(404); res.json(post); }) .catch(next) }; قمت باستبدال id ب slug let postId = req.params.slug; ظهر خطاء Cast to ObjectId failed for value "magic-flip-cards-solving-a-common-sizing-problem" at path "_id" for model "Post" اذا بقي كما هو يظهر خطاء 404 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ghiath Alkhatib نشر 17 أكتوبر 2020 الكاتب أرسل تقرير مشاركة نشر 17 أكتوبر 2020 مشكورين وجدت حل لكن لدي مشكلة بالحروف عربية exports.details = (req, res, next) => { let postId = req.body.slug; Post.findOne(postId) .populate('author', 'name') .populate('comments.author', 'name') .then(post => { if (!post) throw createError(404); res.json(post); }) .catch(next) }; اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Yomna Raouf نشر 17 أكتوبر 2020 أرسل تقرير مشاركة نشر 17 أكتوبر 2020 بتاريخ 10 ساعات قال Ghiath Alkhatib: مشكورين وجدت حل لكن لدي مشكلة بالحروف عربية exports.details = (req, res, next) => { let postId = req.body.slug; Post.findOne(postId) .populate('author', 'name') .populate('comments.author', 'name') .then(post => { if (!post) throw createError(404); res.json(post); }) .catch(next) }; السبب في هذا هو أن هذه الحزمة لا تدعم الرموز الخاصة باللغة العربية. لحل هذه المشكلة يمكنك استخدام الحزمة التالية arSlugify مع هذه الحزمة mongose-url-slugs. و لكن أنصحك باستخدام هذه الحزمة Slugify "تدعم العربية" فهي أفضل منهم و موثوقة أكثر. بالتوثيق. اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Ghiath Alkhatib
مرحبا استخدم اطار express
اريد تحويل Url مقالة من id الى title
قمت بتثبت حزمة mongoose-slug-generator
وقمت بتالي
في ملف Post
و ملف router
لكن Server توقف عن عمل يخبرني يوجد خطاء لا يذكر ماهو خطاء واين
هل يوجد خطاء في طريقتي !
تم التعديل في بواسطة Ghiath Alkhatibرابط هذا التعليق
شارك على الشبكات الإجتماعية
8 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.