Das hat mich den ganzen Tag bekommen. Ich kann die eigentliche Datei finden mit _sid mit gfs.exist(), aber wenn ich zur nächsten Codezeile gehe, erhalte ich jedes Mal einen Fehler und die Mungoverbindung stürzt ab. Das scheint so einfach zu sein, aber bisher hat noch nichts funktioniert.Warum kann ich gfs.files nicht mit einer ObjectId löschen?
mein Code:
/**
* Created by foolishklown on 10/2/2016.
*/
var Grid = require('gridfs-stream'),
User = require('../../models/user'),
mongoose = require('mongoose');
module.exports = function(id, ref, type, res) {
console.log(ref.green);
Grid.mongo = mongoose.mongo;
var conn = mongoose.createConnection('mongodb://localhost/media');
conn.once('open', function() {
var gfs = Grid(conn.db);
gfs.exist({_id: ref}, function(err, found) {
if(err) {
console.error('error finding file'.red);
} else {
console.info('found file', found);
gfs.files.remove({_id: ref }, function(err) {
if(err) {
console.error('error removing that file');
process.exit(1);
} else {
console.info('removed file: ', found.green);
deleteFromUserDb(id, type, ref);
res.status(200).send({id: id, type: type, ref: ref});
}
});
}
});
});
conn.close();
function deleteFromUserDb(userId, fileType, refId) {
var userConn = mongoose.createConnection('mongodb://localhost/mean-auth', (error) => {
if(error) {
console.error('Error connecting to the mean-auth instance'.red);
process.exit(1);
} else {
User.findById(userId, (err, doc) => {
if(err) {
console.error('Error finding user with id: ', uid);
process.exit(1);
} else {
console.log('original doc: ', doc);
doc.removeMedia(fileType, refId);
doc.save();
console.log('new doc: ', doc);
}
})
}
});
}
};
ich versucht habe mit gfs.files.remove ({_ id: ref} function (.....) ohne Erfolg
i auch versucht haben, mit gfs.files.remove ({_id: ref}, {_id: 1}, function (....)
Ich habe auch beide oben mit gfs.remove() ohne gfs.files.remove versucht. ....
muss es etwas einfaches sein aber es hat mich geschlagen p ganzen tag ... danke
new edit 10/15 .......... ich versuche jetzt nur den nativen mongodb-treiber zu verwenden. Ich kann die Datei sowohl mit der Zeichenfolge als auch mit einer Objekt-ID suchen. Es sieht so aus, als wäre die Operation kein Problem, aber wenn ich die Shell benutze, um zu sehen, ob die Datei gelöscht wurde, existiert sie immer noch sowohl in fs.files als auch in fs chunks. Dieser bringt mich um!
und bearbeiten: es wird direkt an der Linie aufgehängt, wo ich console.info (‚gefunden Datei‘, gefunden) ....... ... –
auch, ich habe versucht, die Ref-Variable (die als String gesendet wird) auf eine ObjectId mit var objectId = mongoose.Types.ObjectId (ref); –