カテゴリ: Node.js

検索結果: 7件

article-thumbnail

Node.jsのsprintfインストールと使用例まとめ

【概要】Node.jsにsprintfをインストールし、使用方法についてまとめます。【インストール】cd インストールするプロジェクトのルートディレクトリnpm i sprintf-js【使用例】・ソースuserList配列の中身を順番に「Hello ユーザー名」の形で出力します。const sprintf require('sprintf-js').sprintf;const userList ['hoge', 'fuga', 'hogefuga'];for (let user of userList) { console.log(sprintf('Hello %s', user));}出力結果Hello hogeHello fugaHello hogefuga・指定した桁数の数値出力0埋めで3つの数字を出力したい場合、下記のようになります。const sprintf require('sprintf-js').sprintf;console.log(sprintf('%03d.jpg', 1));console.log(sprintf('%03d.jpg', 12));出力結果001.jpg012.jpg

カテゴリ: Node.js 2021-02-11 19:46:13
article-thumbnail

Node.jsでのディレクトリ・ファイル操作方法まとめ

【概要】Node.jsでのディレクトリとファイルの操作方法についてまとめます。参考としてNuxt.jsでのzipファイルの投稿方法については以下のドキュメントにまとめているので、参考にしてみて下さい。Nuxt.jsでzipファイルをアップロードする方法【初期設定】1. multerとfs-extraとadm-zipをインストールするnpm i multer fs-extra adm-zip2. Node.jsにてmulterとfs-extraとadm-zipを読み込むconst fs require('fs-extra');const multer require('multer');const multerStorage multer.diskStorage({ destination (req, file, cb) { cb(null, '/static'); }, filename (req, file, cb) { cb(null, file.originalname); }});const upload multer({ storage: multerStorage });const admZip require('adm-zip');※ 「multer.diskStorage」メソッドのデフォルト設定では投稿されたzipファイル名がランダムな文字列で保存されます。元のファイル名で保存する場合の処理を記述しているので、不要な場合はメソッド内部で設定されている「filename」部分は削除して下さい。【ディレクトリ確認】・構文fs.existsSync(検索対象パス);存在する場合には「true」を返し、存在しない場合は「false」を返します。・例文下記ではstatic/uploadディレクトリが存在確認をしております。if (fs.existsSync('./static/upload')) { console.log('ディレクトリが存在します。');} else { console.log('ディレクトリは存在しません。');}【zipファイル解凍】・構文let zip new admZip(zipファイルパス);zip.extractAllTo(解凍先のパス, true);先ず、「admZip」メソッドの引数にzipファイルのパスを記述します。「zip.extractAllTo」メソッドで指定したパス先に解凍します。・例文let zip new admZip('./static/zip/sample.zip');zip.extractAllTo('./static/upload/', true);上記は「/static/zip」配下に存在する「sample.zip」を「/static/tmp/」配下に解凍します。【ディレクトリ作成】・構文fs.mkdir(作成対象のディレクトリパス);・例文fs.mkdir('./static/tmp/');staticディレクトリ配下にtmpディレクトリを作成します。【ディレクトリ同期】・構文fs.copySync(同期元パス, 同期先パス);同期元のファイル・ディレクトリが第2引数に設定したパスに同期されます。・例文fs.copySync('./static/tmp/sample', './static/upload/sample');上記は「/static/tmp/sample」配下のディレクトリ・ファイルを「/static/upload/sample」に同期させます。よって、どちらのsampleディレクトリも同じ内容になります。筆者はzipファイル解凍後に、中身のバリデーション等を行う際に使います。【ディレクトリ削除】・構文fs.removeSync(削除対象ディレクトリのパス);・例文fs.removeSync('./static/tmp/sample');上記は「/static/tmp/sample」ディレクトリを削除します。【ファイル削除】・構文fs.unlink(削除対象のファイルパス, (err) { if (err) throw err; console.log(削除対象のファイルパス + ' was deleted');});※ 上記はerrのcatchとlog出力を行っており、不要な場合は削除して下さい。・例文fs.unlink('./static/zip/sample.zip', (err) { if (err) throw err; console.log('./static/zip/sample.zip was deleted');});上記は「/static/zip/sample.zip」を削除しております。

カテゴリ: Node.js 2020-11-25 22:40:50
article-thumbnail

Node.jsでzipファイルを解凍する

【概要】Node.jsでzipファイルを解凍する方法についてまとめます。[参考サイト]npm公式:adm-zip【詳細】[サンプルソースのフローチャート]プロジェクト直下に存在する「/static/zip」ディレクトリにzipファイルをアップロードします。アップロードされたzipファイルを「/static/tmp」ディレクトリに展開します。[詳細]1. adm-zipをインストールするnpm i adm-zip2. ファイル解凍処理const staticZipPath './static/zip/';const staticTmpPath './static/tmp/';const admZip require('adm-zip');router.post('/zip', upload.single('application/zip'), function(req, res) { let zip new admZip(staticZipPath + req.file.filename); zip.extractAllTo(staticTmpPath, true); console.log('req.file', req.file); console.log('req.body', req.body); res.send('upload ' + req.file.originalname + ' success');});・ソース詳細APIの/zipに投稿された時点でzipファイルは保存されています。zipまでのパスと保存されたファイル名をadmZipの引数に渡してオブジェクトを作成します。先ほど作成したオブジェクトでextractAllToメソッドを使用します。これでzipファイルを希望したパスに展開する事ができます。

カテゴリ: Node.js 2020-11-24 03:42:23
article-thumbnail

Node.jsでMySQLへのINSERT文を実行する(単数と複数行対応)

【概要】Node.jsで実行するMySQLへのINSERT文についてまとめます。1レコードでも複数レコードでも対応可能になっています。【詳細】[概要]usersテーブルに複数のuserを登録する方法についてまとめます。この後ループ文で使用されるusersObjには下記のような連想配列でnameとmail情報が入っているとします。let usersObj [ {name:'hoge', mail: '[email protected]'}, {name:'fuga', mail: '[email protected]'}, ...省略...];[詳細]1. 定型となるインサート文を定義するlet insertIntoUsersQuery "INSERT INTO users (name, mail) VALUES ?;";2. クエリに必要な値を持つ配列を作成する・必要な配列の型let arr [['name情報', 'mail情報'], ['name情報', 'mail情報'], ...省略...];配列は上記のような形になります。1レコードのみをINSERTしたい場合も配列内に配列を作成する方法は変わりません。例として連想配列のusersObjからnameとmailの値を取得し、配列を作成しています。let usersArr [];for (let user of usersObj) { usersArr.push([user.name, user.mail]);}3. クエリ実行const connection require('./mysql');connection.query(insertIntoUsersQuery, [usersArr], (err, result) {if (err) {console.log(" Error query ", err);return next(err);}res.json(result);})気を付ける部分は2の項目で作成した配列を配列として囲うことです。上記例のusersArrは既に配列ですが、引数として渡す際に更に配列として囲うことで実行可能です。※ 定数のconnectionには同階層のmysqlディレクトリのindex.jsにMySQL情報が記載されています。

カテゴリ: Node.js 2020-10-30 01:30:13