を使用してのMongoDBから画像のパスを取得する方法私のejsビューの画像。私はこのnodejsが初めてです。画像を表示するには を助けてください。私はBusboyを使用して、ローカルディレクトリに画像をアップロードし マングースを使用してのMongoDBへのイメージのパスを通過したが、今、私ができない に表示するためのパス を取得しているNodejs
は事前にどうもありがとうございました:)
var express = require('express'); //Express Web Server
var busboy = require('connect-busboy'); //middleware for form/file upload
var path = require('path'); //used for file path
var fs = require('fs-extra'); //File System - for file manipulation
var mongoose = require('mongoose');
var mongoClient = require('mongodb').mongoClient;
var objectId = require('mongodb').ObjectId;
var app = express();
app.use(busboy());
app.use(express.static(path.join(__dirname, 'public')));
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost:27017/postname');
/* ==========================================================
Create a Route (/upload) to handle the Form submission
(handle POST requests to /upload)
Express v4 Route definition
============================================================ */
app.set('view engine','ejs');
app.use(express.static(__dirname + '/public'));
var nameSchema = mongoose.Schema({
newfile: Object,
path: String
});
var compileSchema = mongoose.model('foods', nameSchema);
app.get('/', function(req, res, next) {
res.render('index',{'title': 'New post app'});
});
app.route('/')
.post(function (req, res, next) {
var fstream;
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
console.log("Uploading: " + filename);
//Path where image will be uploaded
fstream = fs.createWriteStream(__dirname + '/public/uploads/' + filename);
var dirname = path.join(__dirname + '/public/uploads/' + filename);
file.pipe(fstream);
//mongo save
var paths = new compileSchema({newfile : dirname, passReqToCallback: true});
paths.save(function(err){
if(err) throw err;
compileSchema.find({newfile: dirname}, (err, result) =>{
console.log();
return result;
});
});
fstream.on('close', function() {
console.log("Upload Finished of " + filename);
//where to go next
res.redirect('/profile');
});
});
});
app.get('/profile', (req, res)=>{
res.render('profile',{photo: req.result});
});
var server = app.listen(3030, function() {
console.log('Listening on port %d', server.address().port);
});
をマイEJSファイルです:
<img src='<%= photo.newfile %>' >
私はあなたの質問をよく理解していません。イメージを表示したいルートでMongooseを使って 'path'値を取得しなければなりません。例えば、 'compileSchema.find({あなたのキー値 '}、(エラー、結果)=> {//あなたのrespoonseに渡す})' – forJ
@serendipityあなたのアドバイスに従って変更しましたが、戻り値、私は上記のコードを変更しました。おじゃましてすみません。私を助けてください。ありがとうございます –
@serendipity私は結果を得ました非常にありがとう!しかし、それをejsに表示する方法。それは表示されません:( –