1. var mongoose = require('mongoose');
  2. var Schema = mongoose.Schema;
  3. mongoose.connect('mongodb://127.0.0.1/test');
  4. var conn = mongoose.connection;
  5.  
  6. var fs = require('fs');
  7.  
  8. var Grid = require('gridfs-stream');
  9. Grid.mongo = mongoose.mongo;
  10.  
  11. conn.once('open', function () {
  12. console.log('open');
  13. var gfs = Grid(conn.db);
  14.  
  15. // 写文件
  16. var writestream = gfs.createWriteStream({
  17. filename: 'mongo_file.txt'
  18. });
  19. fs.createReadStream('./local.txt').pipe(writestream);
  20.  
  21. writestream.on('close', function (file) {
  22. console.log(file.filename + ' Written To DB');
  23. });
  24.  
  25. var fs_write_stream = fs.createWriteStream('./write.txt');
  26.  
  27. // 读取文件
  28. var readstream = gfs.createReadStream({
  29. filename: 'mongo_file.txt'
  30. });
  31. readstream.pipe(fs_write_stream);
  32. fs_write_stream.on('close', function () {
  33. console.log('file has been written fully!');
  34. });
  35.  
  36. // 根据文件名称
  37. gfs.remove({filename: 'mongo_file.txt'}, function (err) {
  38. if (err) return handleError(err);
  39. console.log('success');
  40. });
  41.  
  42. // 根据fs.files._id删除
  43. gfs.remove({_id : '548d91dce08d1a082a7e6d96'}, function (err) {
  44. if (err) return handleError(err);
  45. console.log('success');
  46. });
  47.  
  48. // 判断文件是否存在
  49. var options = {filename : 'mongo_file.txt'}; // 使用_id也可以
  50. gfs.exist(options, function (err, found) {
  51. if (err) return handleError(err);
  52. found ? console.log('File exists') : console.log('File does not exist');
  53. });
  54.  
  55. // 获取文件基础信息
  56. gfs.files.find({ filename: 'mongo_file.txt' }).toArray(function (err, files) {
  57. if (err) {
  58. throw (err);
  59. }
  60. console.log(files);
  61. });
  62. });

nodejs的gridfs基本操作的更多相关文章

  1. GridFS使用及配合nginx实现文件服务

    Mongodb下GridFS使用及配合nginx实现文件服务 一.GridFS简介 GridFS是mongodb下用来存储文件的一种规范,所有官方支持的驱动均实现了GridFS规范. Mongodb本 ...

  2. nodejs 基本操作

    查看nodejs版本 nodejs -v 升级nodejs node有一个模块叫n(这名字可够短的...),是专门用来管理node.js的版本的.首先安装n模块:npm install -g n 第二 ...

  3. 学习笔记之NodeJs基本操作

    nodejs安装见文章:windows下安装node.js及less 运行js文件:node xxx.js 调用http模块,并指定端口为3000,向客户端输出<h1>Node.js< ...

  4. MySql数据库在NodeJS中简单的基本操作

    阅读目录 一:连接数据库 二:数据的增删改查操作 2.1 数据库新增和查询数据 2.2 获取该数据的主键值 2.3 多语句查询 回到顶部 一:连接数据库 const mysql = require(' ...

  5. NodeJs对Mysql封装

    之前在学习NodeJs的时候,每次操作数据库都需要连接数据库然后开始写Sql操作,这样非常麻烦,然后自己对Mysql进行了封装,一共100多行代码. github地址: Mysql操作 我在里面对My ...

  6. nodejs复习01

    console 格式化 console.log("%s:%s", "a", "b") //字符串 console.log("%d. ...

  7. Nodejs之MEAN栈开发(三)---- 使用Mongoose创建模型及API

    继续开扒我们的MEAN栈开发之路,前面两节我们学习了Express.Jade引擎并创建了几个静态页面,最后通过Heroku部署了应用. Nodejs之MEAN栈开发(一)---- 路由与控制器 Nod ...

  8. [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

    [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建> ...

  9. 【NodeJS 学习笔记04】新闻发布系统

    前言 昨天,我们跟着这位大哥的博客(https://github.com/nswbmw/N-blog/wiki/_pages)进行了nodeJS初步的学习,最后也能将数据插入数据库了 但是一味的跟着别 ...

随机推荐

  1. mxonline实战6 , 忘记用户密码时进行重置

        对应github地址:密码重置   原理:  1. 一个需要输入用户邮箱和注册码的密码忘记页面 2. 点击提交后,用户邮箱收到一个邮件,包含重置密码的链接 3. 点击链接进入密码重置页面   ...

  2. Nginx采用yum安装-Carr

    (1)使用yum安装nginx需要包括Nginx的库,安装Nginx的库 #rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx- ...

  3. Spring aop+自定义注解统一记录用户行为日志

    写在前面 本文不涉及过多的Spring aop基本概念以及基本用法介绍,以实际场景使用为主. 场景 我们通常有这样一个需求:打印后台接口请求的具体参数,打印接口请求的最终响应结果,以及记录哪个用户在什 ...

  4. JVM调优总结 -Xms -Xmx -Xmn -Xss(转自:iteye unixboy)

    堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64为操作 ...

  5. Python库大全

    网络 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络库(绑定libcurl). urllib3 – Pyth ...

  6. easy-mock本地部署成功,访问报错:EADDRNOTAVAIL 0.0.0.0:7300 解决方案

    easy-mock本地部署成功后,迫不及待的想看看是否能正常访问,执行命令 npm run dev 启动项目,访问 127.0.0.1:7300 ,结果郁闷的是报错:EADDRNOTAVAIL 0.0 ...

  7. (五)Audio子系统之AudioRecord.stop

    在上一篇文章<(四)Audio子系统之AudioRecord.read>中已经介绍了AudioRecord如何获取音频数据,接下来,继续分析AudioRecord方法中的stop的实现 函 ...

  8. Mac下使用crontab来实现定时任务

    说明: 1.Linux和Mac下操作crontab都是一致的 2.配置文件都在/etc/crontab下,如果没有就创建. 3.测试发现直接使用crontab -e命令创建的定时任务是放在临时文件夹的 ...

  9. 使用大白菜安装Windows Server 2012 r2

    依照往常安装win10的习惯操作,结果发现无GUI界面.重装时注意到了两个问题: 1. 启动时有两个U盘启动选项,请选择无UEFI的模式启动: 2. 一键安装系统时,一定要点一下系统文件来源的地方,因 ...

  10. SASS的安装和转换为CSS的方法

    http://www.cnblogs.com/52css/archive/2012/08/19/sass-how-to-install-and-use.html SASS的安装方法: 1.先安装Rub ...