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;
}