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

كيف اقوم بتخزين الصور والفيديو في mongodb؟

Ahmed Zehry

السؤال

لدي تطبيق اريد فيه رفع صور ضمن قاعدة البيانات داخل هذا النموذج 

const ModelSchema = new mongoose.Schema(
  {
    name: {
      type: String,
      required: true,
      unique: true,
    },
    pathname:{
      type: String,
      required: true,
      unique: true,
    },
    title: {
      type: String,
      unique: true,
    },
    desc: {
      type: Array,
      required: true,
      default:[""]
    },
    image: {
      type: String,
      required: true,
    },
  },
  {
    timestamps: true,
  }
);

هل يستطيع احد اخباري بالطريقة التي يتم بها الامر 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

مرحباً احمد ,

يمكنك تخزين الصور ومقاطع الفيديو في MongoDB باستخدام تقنية تسمى GridFS , وهي نظام لتخزين ملفات كبيرة في MongoDB دون الحاجة إلى تقسيمها إلى أجزاء أصغر.

في Schema الخاص بك، يمكنك تغيير حقل الصورة (image) إلى نوع بيانات Buffer وتخزين البيانات المرتبطة بالصورة كـ Buffer، ثم تحويلها إلى بيانات قابلة للتخزين في GridFS.

الخطوات :

  • أولاً قم بتثبيت حزمة GridFSStream .
npm i gridfs-stream
  • ثانياً قم بتعديل schema الخاصة بك لاستخدام GirdFS:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const Grid = require('gridfs-stream');
const conn = mongoose.createConnection('mongodb://localhost/your_database_name');

let gfs;

conn.once('open', () => {
  gfs = Grid(conn.db, mongoose.mongo);
  gfs.collection('uploads');
});

const ModelSchema = new Schema(
  {
    name: {
      type: String,
      required: true,
      unique: true,
    },
    pathname:{
      type: String,
      required: true,
      unique: true,
    },
    title: {
      type: String,
      unique: true,
    },
    desc: {
      type: Array,
      required: true,
      default:[""]
    },
    image: {
      data: Buffer, 
      contentType: String 
    },
  },
  {
    timestamps: true,
  }
);

const Model = mongoose.model('Model', ModelSchema);

module.exports = Model;

هنا يتم تخزين البيانات الخاصة بالصورة في data ك Buffer ونوع المحتوى contentType يحتوي على نوع الصورة. عند رفع الصورة، يجب عليك استخدام GridFS لتخزين البيانات في MongoDB.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ منذ ساعة مضت قال Hikmat Jaafer:

مرحباً احمد ,

يمكنك تخزين الصور ومقاطع الفيديو في MongoDB باستخدام تقنية تسمى GridFS , وهي نظام لتخزين ملفات كبيرة في MongoDB دون الحاجة إلى تقسيمها إلى أجزاء أصغر.

في Schema الخاص بك، يمكنك تغيير حقل الصورة (image) إلى نوع بيانات Buffer وتخزين البيانات المرتبطة بالصورة كـ Buffer، ثم تحويلها إلى بيانات قابلة للتخزين في GridFS.

الخطوات :

  • أولاً قم بتثبيت حزمة GridFSStream .
npm i gridfs-stream
  • ثانياً قم بتعديل schema الخاصة بك لاستخدام GirdFS:
const mongoose = require('mongoose');
const { Schema } = mongoose;
const Grid = require('gridfs-stream');
const conn = mongoose.createConnection('mongodb://localhost/your_database_name');

let gfs;

conn.once('open', () => {
  gfs = Grid(conn.db, mongoose.mongo);
  gfs.collection('uploads');
});

const ModelSchema = new Schema(
  {
    name: {
      type: String,
      required: true,
      unique: true,
    },
    pathname:{
      type: String,
      required: true,
      unique: true,
    },
    title: {
      type: String,
      unique: true,
    },
    desc: {
      type: Array,
      required: true,
      default:[""]
    },
    image: {
      data: Buffer, 
      contentType: String 
    },
  },
  {
    timestamps: true,
  }
);

const Model = mongoose.model('Model', ModelSchema);

module.exports = Model;

هنا يتم تخزين البيانات الخاصة بالصورة في data ك Buffer ونوع المحتوى contentType يحتوي على نوع الصورة. عند رفع الصورة، يجب عليك استخدام GridFS لتخزين البيانات في MongoDB.

قمت بهذه الخطوات ولكن لم تظهر الخاصيه image  في mongodb
الاولى هذه بالطريقة القديمة ولكن بعد التعديل لم تظهر في الثانية 

Untitled-11.jpg

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...