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

تحويل Url مقالة من id الى title

Ghiath Alkhatib

السؤال

مرحبا استخدم اطار 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...