GridOut class
class GridOut extends GridFSFile { GridOut([Map data]) : super(data); Future writeToFilename(String filename) { return writeToFile(new File(filename)); } Future writeToFile(File file) { var completer = new Completer(); var sink = file.openWrite(mode: FileMode.WRITE); writeTo(sink).then((int length) { sink.close(); }); return sink.done; } Future<int> writeTo(IOSink out) { int length = 0; Completer completer = new Completer(); addToSink(Map chunk) { BsonBinary data = chunk["data"]; out.add(data.byteList); length += data.byteList.length; } fs.chunks.find(where.eq("files_id", id).sortBy('n')) .forEach(addToSink) .then((_) => completer.complete(length)); return completer.future; } }
Extends
GridFSFile > GridOut
Constructors
Properties
final List<String> aliases #
inherited from GridFSFile
List<String> get aliases { return extraData["aliases"]; }
Map data #
inherited from GridFSFile
Map get data { Map result = { "_id" : id, "filename" : filename, "contentType" : contentType, "length" : length, "chunkSize" : chunkSize, "uploadDate" : uploadDate, "md5" : md5, }; extraData.forEach((String key, Object value) { result[key] = value; }); return result; }
set data(Map input) { extraData = new Map.from(input); // Remove the known keys. Leaving the extraData. id = extraData.remove("_id"); filename = extraData.remove("filename"); contentType = extraData.remove("contentType"); length = extraData.remove("length"); chunkSize = extraData.remove("chunkSize"); uploadDate = extraData.remove("uploadDate"); md5 = extraData.remove("md5"); }
Map metaData #
inherited from GridFSFile
Map get metaData { return extraData["metadata"]; }
set metaData(Map metaData) { extraData["metadata"] = metaData; }
Methods
int numChunks() #
inherited from GridFSFile
int numChunks() { return (length.toDouble() / chunkSize).ceil().toInt(); }
Future<Map> save() #
inherited from GridFSFile
Future<Map> save() { if (fs == null) { throw new MongoDartError('Need fs'); } Map tempData = data; return fs.files.insert(tempData); }
Future<bool> validate() #
inherited from GridFSFile
Future<bool> validate() { if (fs == null) { throw new MongoDartError('no fs'); } if (md5 == null) { throw new MongoDartError('no md5 stored'); } Completer completer = new Completer(); // query for md5 at filemd5 DbCommand dbCommand = new DbCommand( fs.database,fs.bucketName,0,0,1,{"filemd5" : id}, {"md5" : 1}); fs.database.executeDbCommand(dbCommand).then((Map data) { if (data != null && data.containsKey("md5")) { completer.complete(md5 == data["md5"]); } else { completer.complete(false); } }); return completer.future; }
Future<int> writeTo(IOSink out) #
Future<int> writeTo(IOSink out) { int length = 0; Completer completer = new Completer(); addToSink(Map chunk) { BsonBinary data = chunk["data"]; out.add(data.byteList); length += data.byteList.length; } fs.chunks.find(where.eq("files_id", id).sortBy('n')) .forEach(addToSink) .then((_) => completer.complete(length)); return completer.future; }