私はnodejsを学ぼうとしている初心者です。私のアプリはファイルを投稿、配置、アップロードする必要があります。BodyParser を使用してファイルをアップロードできないことがわかりました。
BodyParser (アプリ レベルで追加) だけを使用する前は、POST と PUT WORKED でした。(もちろん、アップロードはしませんでした)
この記事を見つけました [ busboy を使用した Express アプリの bodyParser() から移行しますか?
それでは、記事に従ってみてください。POST と PUT を機能させてから、アップロードに移ろうとしています。PUT と POST の両方でエラーは発生しませんが、req.body は {} です
私のserver.jsには
mongoose.connection.on("connected", function(ref) {
console.log("Connected to DB!");
var app = express();
port = process.env.port || 3000;
ip = process.env.ip;
var router = express.Router();
router.use(function(req, res, next) {
next();
});
app.use('/api', router);
require('./app/routes')(router);
app.listen(port, ip, function() {
console.log('listening on port ' + port);
});
});
私のrouter.jsにはあります(混乱を取り除きます)
var ImageModel = require('./models/image.js')
,common = require('./common.js')
,bodyParser = require('body-parser')
,busboy = require('connect-busboy')
;
module.exports = function(router) {
router.put('/pict/:id',
bodyParser.urlencoded({ extended: true }),
function (req, res) {
console.log("--> %j", req.body);
ImageModel.findByIdAndUpdate(req.params.id, req.body, function (err, user) {
if (err) throw err;
ImageModel.findById(req.params.id, function (err, pict) {
if (err) res.send(err);
res.json(pict);
});
});
});
router.post('/pict',
bodyParser.urlencoded({ extended: true }),
function (req, res) {
console.log("--> %j", req.body);
var pict = new ImageModel(req.body);
pict.save(function (err) {
if (err) throw err;
res.json(pict);
});
});
解決
router.put('/pict/:id',
bodyParser.urlencoded({ extended: true }), bodyParser.json(),
function (req, res) {
console.log("--> %j", req.body);
ImageModel.findByIdAndUpdate(req.params.id, req.body, function (err, user) {
if (err) throw err;
ImageModel.findById(req.params.id, function (err, pict) {
if (err) res.send(err);
res.json(pict);
});
});
});
router.post('/pict',
bodyParser.urlencoded({ extended: true }), bodyParser.json(),
function (req, res) {
console.log("--> %j", req.body);
var pict = new ImageModel(req.body);
pict.save(function (err) {
if (err) throw err;
res.json(pict);
});
});