2016-11-05 5 views
0

J'ai développé un api reposant noeud. J'ai besoin de télécharger des fichiers image et enregistrer les noms de fichiers dans la base de données. comment le faire. ceci est mon codeNode repos api, fichier de téléchargement et enregistrer les noms de fichiers dans la base de données avant de poster

var express = require('express'); 
var multer = require('multer') 
var upload = multer({ dest: 'uploads/' }) 
var router = express.Router(); 
var path = require('path'); 

var storage = multer.diskStorage({ 
    destination: function (req, file, callback) { 
    callback(null, './uploads'); 
    }, 
    filename: function (req, file, callback) 
    { 
    callback(null, Date.now('nano') +   path.extname(file.originalname)); 
    } 
}); 
var upload = multer({ storage : storage }).array('userPhoto',2); 

// Models 
var Car = require('../models/car'); 

// Routes 
Car.methods(['get','put','post','delete']); 

// before file uplod part 
Car.before('post',function(req,res,next) 
{ 
    var car_photos = []; 
    upload(req,res,function(err) 
    { 
     if(err) 
     { 
      return res.end("Error uploading file."); 
     } 
     else 
     { 
      for(var i = 0; i < req.files.length; i++) 
      { 
       car_photos.push(req.files[i]['filename']); 
      } 
     } 
    }); 
    req.body.car_photos = car_photos; 
    next(); 
}); 
Car.register(router,'/car'); 
module.exports = router; 

Ce tableau car_photos est null. comment je sauvegarde ce tableau ma base de données. aidez s'il vous plaît.

Car.before('post',function(req,res,next) 
{ 
    var car_photos = []; 
    upload(req,res,function(err) 
    { 
     if(err) 
     { 
      return res.end("Error uploading file."); 
     } 
     else 
     { 
      for(var i = 0; i < req.files.length; i++) 
      { 
       car_photos.push(req.files[i]['filename']); 
      } 
     } 
    }); 
    req.body.car_photos = car_photos; 
    next(); 
}); 

Répondre

2

req.body.car_photos = car_photos; next();

ces lignes doivent être dans le rappel de la fonction de téléchargement. Dans le bloc else après la boucle for.

+0

Thanx bro il fonctionne. –

+0

Est-il possible de poster une réponse complète avec les modèles lui-même –

0

Cet exemple vaut pour toute personne utilisant le nœud reposant bibliothèque
https://github.com/baugarten/node-restful

Pour le modèle ajouter un champ avec:

car_photos: Array 

var express = require('express'); 
var multer = require('multer') 
var upload = multer({ dest: 'uploads/' }) 
var router = express.Router(); 
var path = require('path'); 

var storage = multer.diskStorage({ 
    destination: function (req, file, callback) { 
    callback(null, './uploads'); 
    }, 
    filename: function (req, file, callback) 
    { 
    callback(null, Date.now() + path.extname(file.originalname)); 
    } 
}); 
var upload = multer({ storage : storage }).array('car_photos',2); 

// Models 
var Car = require('../models/car'); 

// Routes 
Car.methods(['get','put','post','delete']); 

// before file uplod part 
Car.before('post',function(req,res,next) 
{ 
    var car_photos = []; 
    upload(req,res,function(err) 
    { 
     if(err) 
     { 
      return res.end("Error uploading file."); 
     } 
     else 
     { 
      for(var i = 0; i < req.files.length; i++) 
      { 
       car_photos.push(req.files[i]['filename']); 
      } 
      req.body.car_photos = car_photos; 
      next(); 
     } 
    }); 
}); 
Car.register(router,'/car'); 
module.exports = router;