اذهب إلى المحتوى

السؤال

نشر (معدل)

مرحبا استخدم اطار 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 توقف عن عمل يخبرني يوجد خطاء لا يذكر ماهو خطاء واين

هل يوجد خطاء في طريقتي !

تم التعديل في بواسطة Ghiath Alkhatib

Recommended Posts

  • 0
نشر

يمكنك فقط إستخدام الطريقة التالية التي تعتمد على 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

  • 0
نشر (معدل)
بتاريخ 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

تم التعديل في بواسطة Ghiath Alkhatib
  • 0
نشر (معدل)

الان يظهر حقل و يظهر رابط كالمطلوب عنوان مقال
لكن بعد نقر ليه يظهر هذا خطاء

 

Cast to ObjectId failed for value "magic-flip-cards-solving-a-common-sizing-problem" at path "_id" for model "Post"

 

تم التعديل في بواسطة Ghiath Alkhatib
  • 0
نشر

اعتقد مشكلة بتعريف متغير 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

  • 0
نشر

مشكورين وجدت حل
لكن لدي مشكلة بالحروف عربية

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)
};

 

  • 0
نشر
بتاريخ 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 "تدعم العربية" فهي أفضل منهم و موثوقة أكثر.

بالتوثيق.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...