1. 程式人生 > >nodejs漸入佳境[10]-案例-使用者輸入+json增刪查改

nodejs漸入佳境[10]-案例-使用者輸入+json增刪查改

對於之前的程式碼進行封裝

原始檔案app.js

對於返回節點進行判斷,如果新增了節點,就列印新增節點。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//列印字串
const yargs = require('yargs');
const nodes = require('./nodes.js')
console.log('Start app.');

console.log(process.argv);

console.log('yargs',yargs.argv);
const argv = yargs.argv;
var command = process.argv[2
];


if(command==='add'){
  var note = nodes.addNote(argv.title,argv.body);
 if(note){
   console.log('add success');
   console.log(`title:${note.title}`);
   console.log(`body:${note.body}`);
 }
}else if(command === 'list'){
 nodes.getAll();

}else if(command =='read'
){

 nodes.getNote(argv.title);
}else if(command=='remove'){
 nodes.removeNote(argv.title);
}else{
 console.log('command not find');
}

notes.js:

封裝 獲取節點以及儲存節點、返回節點。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
console
.log('start nodes.js');

const fs = require('fs');

//從檔案中獲取節點
var fetchNode = ()=>{
 try{
   var notesString = fs.readFileSync('notes-data.json');
   return JSON.parse(notesString);
 }catch(e){
   return [];
 }
}
//儲存節點到檔案
var saveNote = (notes)=>{

 fs.writeFileSync('notes-data.json',JSON.stringify(notes));

}

//增加節點,如果新增返回新增節點。
var addNote = (title,body)=>{
 var notes = fetchNode();
 var note = {
     title,
     body
 };

 //篩選出相同的節點
 var duplicateNotes = notes.filter((note)=>note.title===title);
 //沒有相同的節點
 if(duplicateNotes.length ===0){
   notes.push(note);
   saveNote(notes);
   return note;
 }
}

var getAll = ()=>{
console.log('Get All notes');
};

var getNote = (title)=>{

 console.log('getting note',title);
};

var removeNote = (title)=>{
 console.log('Removing note',title);
};

module.exports = {
   addNote,
   getAll,
   getNote,
   removeNote
};

測試

開啟控制檯,在當前目錄下輸入:

1
> node app.js add --title="buy book3" --body="jonson"

控制檯返回結果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
start nodes.js
Start app.
[ '/Users/jackson/.nvm/versions/node/v10.13.0/bin/node',
 '/Users/jackson/Desktop/compaign/app.js',
 'add',
 '--title=buy book3',
 '--body=jonson' ]
yargs { _: [ 'add' ],
 title: 'buy book3',
 body: 'jonson',
 '$0': 'app.js' }
add success
title:buy book3
body:jonson

移除節點

app.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//列印字串
const yargs = require('yargs');
const nodes = require('./nodes.js')
console.log('Start app.');

console.log(process.argv);

console.log('yargs',yargs.argv);
const argv = yargs.argv;
var command = process.argv[2];

if(command==='add'){
  var note = nodes.addNote(argv.title,argv.body);
 if(note){
   console.log('add success');
   console.log(`title:${note.title}`);
   console.log(`body:${note.body}`);
 }
}else if(command === 'list'){
 nodes.getAll();

}else if(command =='read'){
 nodes.getNote(argv.title);
}else if(command=='remove'){
 var noteRemoved =  nodes.removeNote(argv.title);
 var message = noteRemoved?'Note was removed':'note not found';
 console.log(message);
}else{
 console.log('command not find');
}

notes.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
console.log('start nodes.js');
const fs = require('fs');
//從檔案中獲取節點
var fetchNode = ()=>{
 try{
   var notesString = fs.readFileSync('notes-data.json');
   return JSON.parse(notesString);
 }catch(e){
   return [];
 }
}
//儲存節點到檔案
var saveNote = (notes)=>{

 fs.writeFileSync('notes-data.json',JSON.stringify(notes));

}

//增加節點,如果新增返回新增節點。
var addNote = (title,body)=>{
 var notes = fetchNode();
 var note = {
     title,
     body
 };

 //篩選出相同的節點
 var duplicateNotes = notes.filter((note)=>note.title===title);
 //沒有相同的節點
 if(duplicateNotes.length ===0){
   notes.push(note);
   saveNote(notes);
   return note;
 }
}

var getAll = ()=>{
console.log('Get All notes');
};

var getNote = (title)=>{

 console.log('getting note',title);
};

var removeNote = (title)=>{
 var notes = fetchNode();
 //篩選出不同的節點
 var duplicateNotes = notes.filter((note)=>note.title!==title);
   saveNote(duplicateNotes);
   return notes.length !==duplicateNotes.length;
};

module.exports = {
   addNote,
   getAll,
   getNote,
   removeNote

相關推薦

nodejs漸入佳境[10]-案例-使用者輸入+json增刪

對於之前的程式碼進行封裝 原始檔案app.js 對於返回節點進行判斷,如果新增了節點,就列印新增節點。 12345678910111213141516171819202122232425262728 //列印字串const yargs = require('yargs

nodejs漸入佳境[9]-儲存節點到json檔案

原始檔案 app.js: 12345678910111213141516171819202122 const yargs = require('yargs');const nodes = require('./nodes.js')console.log('Start a

nodejs漸入佳境[6]-獲取使用者輸入

原始檔案 app.js: 123 console.log('Start app.');console.log(process.argv); 獲取使用者輸入 開啟控制檯,在當前目錄下輸入: 1 > nodemo

nodejs漸入佳境[18]-mongodb-node增刪

1 > npm install --save mongodb 12345678910111213141516171819202122232425 //mongodb 3以上寫法const MongoClient =

SQL Server 表的管理_關於表的操作增刪的操作的詳解(案例代碼)

har table 詳解 增刪 .com ble tab SQ eat SQL Server 表的管理_關於表的操作增刪查改的操作的詳解(案例代碼) 概述: 表由行和列組成,每個表都必須有個表名。 SQL CREATE TABLE 語法 CREATE T

JSON樹節點的增刪

最近了解到使用json字串存到資料庫的一種儲存方式,取出來的json字串可以進行相應的節點操作 故藉此機會練習下遞迴,完成對json節點操作對應的工具類。 介紹一下我使用的依賴      <!-- fastjson --> <dependency>

基於ES6和原生nodejs實現自定義路由,靜態檔案伺服器和增刪的MVC架構分享

基於ES6和原生nodejs來實現一個基於MVC的增刪查改功能示例分享 自定義路由的解耦實現 首先分別處理不同方式的請求: const http = require('http'); const url = require('url')

javaweb的一個增刪的小案例(續)

1.建立一個可以進行查詢也可以進入到新增到資料的頁面的連結 如下為jsp頁面<%@ page language="java" import="java.util.*" import="com.mvcapp.domain.Customer" pageEncoding="

HDFS Java Client對hdfs文件增刪

apache pom.xml onf != open readline inpu test .get step1:增加依賴 pom.xml ... <!-- https://mvnrepository.com/artifact/org

CI 增刪

用戶名 信息 nbsp 復制 arr 數組 pan res 關聯數組 增: //insert//語法:$bool=$this->db->insert(‘表名‘,關聯數組); $data=array( ‘username‘=>‘mary‘,

php mysql增刪

設置 匹配 values bsp update 判斷 數字 可用 字數 php mysql增刪查改代碼段 $conn=mysql_connect(‘localhost‘,‘root‘,‘root‘); //連接數據庫代碼 mysql_query("set names ut

js數組增刪

數組 可能 call lis 存儲 inf method 直接插入排序 目的 一、插入   1. 順序插入 1 function Insert(arr, n, data){ 2 3 //若插入數據位置不在表尾 4

vue中的增刪

pda config api npm pac 循環展示 重啟 win source 1.配置路由:cnpm install vue-router --save   配置資源:cnpm install vue-resource --save 2.增加數據 給文本

Dom的增刪以及常用事件

dom click ech blur chan size name blue hang dom的增刪查改 // 查 var _input = document.getElementById(‘_input‘); var _div = document.ge

C# xml增刪

pda lose encoding clas 註意 employees 原來 命名空間 屬性 C# XML XmlDocument 添加命名空間: using System.Xml; 定義公共對象: XmlDocument xmldoc ; XmlNode xmlno

數據庫表增刪幫助類

ram pro 行數 lec 方法 取值 del ado.net sele 1.目的   使用ADO.NET操作連接Sqlserver數據庫,增刪改查數據表. 2.要求   傳入SQL語句和參數,得到結果集或字典集 3.實現辦法   封裝ado.net對象的參數化

SSH框架的多表查詢和增刪 (方法一)上

ips 查詢 href ssh margin blank 麻煩 tle 指點 原創作品,允許轉載,轉載時請務必標明作者信息和聲明本文章==》 http://www.cnblogs.com/zhu520/p/7772823.html 因為最近在做Android 練習

jdbc-mysql基礎 增刪 簡單示例

做的 裏的 http exec pda 針對 ping 含義 ade 禮悟:   好好學習多思考,尊師重道存感恩。葉見尋根三二一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉強身心,誠勸且行且珍惜。   數據、數據,命根就在數據

ADO增刪

sta area helper ons text help query ram 數據庫 using System;using System.Collections.Generic;using System.Text; using System.Data;using Syst

導入,下載,增刪

string part rip void enc text1 || 刪除 失敗 *************************************************************************************************