UNPKG

node-gridfs-toolkit

Version:
63 lines (52 loc) 1.69 kB
'use strict'; const _ = require('lodash'); const mongoose = require('mongoose'); const fs = require('fs'); const path = require('path'); const checkShowHelp = require('./check_show_help'); const checkArgv = require('./check_argv'); const connectMongo = require('./connect_mongo'); module.exports = async function(cli) { // 任何参数都不传, 显示帮助菜单 const isShowHelp = checkShowHelp(cli.flags); if (isShowHelp) { cli.showHelp(); return; } // 检查参数, 给默认值 const argvs = await checkArgv(cli.flags); console.log(argvs); // 连接mongo const connectParams = _.pick(argvs, [ 'host', 'port', 'user', 'password', 'authenticationDatabase', 'db', ]); const mongoClient = await connectMongo(connectParams); console.log(Object.keys(mongoClient)); // 查询数据 let result = null; // 判断是否需要格式化 if (argvs.pretty) { const resultObj = await mongoClient.gfs.getContent({ _id: mongoose.Types.ObjectId(argvs.id) }); result = JSON.stringify(resultObj, null, 2); } else { result = await mongoClient.gfs.getPlainContent({ _id: mongoose.Types.ObjectId(argvs.id) }); } console.log(result); // 如果需要保存到文件 if (argvs.output) { let targetPath = argvs.output; if (argvs.output.startsWith('/')) { targetPath = argvs.output; } else if (argvs.output.startsWith('.')){ targetPath = path.join(process.cwd(), argvs.output); } fs.writeFileSync(targetPath, result, { encoding: 'utf-8', flag: 'w' }); console.log(`file path: ${targetPath}`); } process.exit(0); };