I Formdata auf meine ausdrückliche App wie so schickte:Mungo - FindOne() innerhalb Multer
itemFactory.saveItem = function(item, callback){
var formData = new FormData();
for(var i = 0; i < item.photos.length; i++){
formData.append('photos', item.photos[i]);
}
for(var key in item){
formData.append(key, item[key])
}
return $http.post('/api/item/', formData, {
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
}).success(callback);
};
Ich bin ein neues Element in meiner Mungo DB speichern. Jetzt funktioniert alles perfekt. Aber ich möchte Duplikate mit Mungo findOne()
erkennen, und nicht nur Mongoose Handle erkennen lassen, wenn ein doppelter Schlüssel existiert, wenn Sie in die DB schreiben. Weil meine Bilder zu diesem Zeitpunkt hochgeladen werden, wenn ein doppelter Schlüssel existiert oder nicht. Weil es nur das Duplikat auf save()
das Problem jetzt, in meiner Express-App ist, wenn ich findOne()
benutze, hat Multer() meine formData noch nicht entschlüsselt. ex:
router.post('/item', function(req, res){
Vehicle.findOne({ id: String(req.body.id) }, function(error, item){
var storage = multer.diskStorage({...})
var upload = multer({
storage: storage
}).any();
upload(req, res, function(error){
//formData is only available here via req.body
//and not at findOne() stage.
});
});
});
ich die FindOne innerhalb der Upload nicht tun können, weil dann die Dateien sowieso und dann nur ein Duplikat erkennen hochgeladen werden.
Ich versuchte eine andere multer().any()
Funktion zum Abrufen der FormData direkt nach der .post()
, aber das schien nicht zu funktionieren. Ich glaube nicht, ich kann dies tun:
var detectItem = multer().any()
detectItem(req, res, function(){
Vehicle.findOne({ id: String(req.body.id) }, function(error, item){
var storage = multer.diskStorage({...})
var upload = multer({
storage: storage
}).any();
upload(req, res, function(error){
//formData is only available here via req.body
//and not at findOne() stage.
});
})
Es ist nicht zu mögen scheint mir in einer multer Funktion eine multer Funktion.
Irgendwelche Ratschläge?
Sie [Dateifilter] (https://github.com/expressjs/multer#filefilter) und prüfen Sie nach Duplikaten dort zu verwenden Versuchen? – rkm
Nein, ich habe es noch nicht ausprobiert. Ich werde mich schnell umsehen. Vielen Dank. –
@rkm, ich muss Dubletten in der DB finden, Dateifilter prüft nur auf doppelte Felder in den aktuellen Daten. –