0

ノードの安静なAPIを開発しました。いくつかの画像ファイルをアップロードし、ファイル名をデータベースに保存する必要があります。どのようにそれを行う。これは私のコードです

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;

この car_photos 配列は null です。この配列をデータベースに保存する方法。助けてください 。

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

2 に答える 2

2

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

これらの行は、アップロード関数のコールバックに含まれている必要があります。for ループの後の else ブロック内。

于 2016-11-05T17:38:46.557 に答える
0

この例は、ライブラリ node-restful
https://github.com/baugarten/node-restfulを使用しているすべての人に適用されます。

モデルの場合、次のフィールドを追加します。

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;
于 2017-04-30T14:36:23.423 に答える