Próbuję przechwycić tekstowy ciąg (oparty na klientach/sesjach), gdy użytkownik przesyła obraz.Przechwytuj ciąg i przechowuj go w mongoDB
Wyjście robiąc db.collection.find();
z konsoli teraz podczas przesyłania:
"_id" : ObjectId("590c67f472667e031fe80a9d"), "path" : "uploads/bicycle.jpg", "originalname" : "bicycle.jpg", "__v" : 0
Tutaj chcę mieć "imagelocation" : "N/A"
również.
Łańcuch bazuje na lokalizacji użytkownika podczas przesyłania obrazu. Chcę połączyć tę określoną wartość łańcuchów z identyfikatorem obiektów obrazu, jak pokazano powyżej.
App.js:
/image UPLOAD TO MONGODB
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var path = require('path');
app.use(bodyParser.json());
//To get the access for the functions defined in imagefile.js class
var routes = require('./imagefile');
// connect to mongo,
mongoose.connect('mongodb://localhost:27017/gps');
app.use('/', routes);
// To get all the images/files stored in MongoDB
app.get('/images', function(req, res) {
routes.getImages(function(err, genres) {
if (err) {
throw err;
}
res.json(genres);
});
});
app.get('/images/:id', function(req, res) {
routes.getImageById(req.params.id, function(err, genres) {
if (err) {
throw err;
}
res.send(genres.path)
});
});
ścieżka i ORIGINALNAME deklarowane są w następujący sposób: w moich imagefile.js
var imageSchema = mongoose.Schema({
path: {
type: String,
required: true,
trim: true
},
originalname: {
type: String,
required: true
},
imagelocation:{ // format for storing
type: String,
required: true
}
});
module.exports = mongoose.model('Image', stringClass);
var Image = module.exports = mongoose.model('files', stringClass);
router.getImages = function(callback, limit) {
Image.find(callback).limit(limit);
}
router.getImageById = function(id, callback) {
Image.findById(id, callback);
}
router.addImage = function(image, callback) {
Image.create(image, callback);
}
//multer
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'uploads/')
},
filename: function(req, file, cb) {
cb(null, file.originalname);
},
imagelocation: function(req,file,cb){
cb(null, $('#coordinates').innerHTML);
}
});
var upload = multer({
storage: storage
});
router.get('/', function(req, res, next) {
res.render('layouts/main.handlebars');
});
router.post('/', upload.any(), function(req, res, next) {
res.send(req.files);
var path = req.files[0].path;
var imageName = req.files[0].originalname;
var imagepath = {};
imagepath['path'] = path;
imagepath['originalname'] = imageName;
router.addImage(imagepath, function(err) {
});
});
module.exports = router;
HTML:
<p id="coordinates">String is generated here</p>
TL; DR - w jaki sposób mogę przechwycić ciąg i wysłać go wraz z obrazem podczas przesyłania go do mojego MongoDB?
całego projektu można znaleźć na stronie: https://github.com/joelfolkesson/myapp
plików w celu sprawdzenia:
imagefile.js
app.js // (wiersz 204 ->)
Hmm, tak, to był pomysł na początku, jednak "nieokreślony" jest zwracany za każdym razem, gdy próbujemy zarejestrować odpowiedź. Czy możesz spróbować zaimplementować to, co napisałeś, w bardziej wyczerpującej odpowiedzi? Dzięki! – Joel
Zobacz zaktualizowaną odpowiedź :) –
Próbowałem już od godziny, aby Twoje rozwiązanie działało, ale po prostu nie mogę. :/Nie widzę, jak by to przechowywał ciąg w tym samym obiekcie db. – Joel