摘要:安裝驅(qū)動(dòng)增刪改查要在中創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),首先我們需要?jiǎng)?chuàng)建一個(gè)對(duì)象,然后配置好指定的和端口號(hào)。如果數(shù)據(jù)庫(kù)不存在,將創(chuàng)建數(shù)據(jù)庫(kù)并建立連接。
1.Node.js 連接 MySQL
$ cnpm install mysql
連接mysql:
var mysql = require("mysql"); var connection = mysql.createConnection({ host : "localhost", user : "root", password : "123456", database : "test" }); connection.connect(); connection.query("SELECT 1 + 1 AS solution", function (error, results, fields) { if (error) throw error; console.log("The solution is: ", results[0].solution); });數(shù)據(jù)庫(kù)連接參數(shù)說(shuō)明
參數(shù) 描述 host 主機(jī)地址 (默認(rèn):localhost) user 用戶名 password 密碼 port 端口號(hào) (默認(rèn):3306) database 數(shù)據(jù)庫(kù)名 charset 連接字符集(默認(rèn):"UTF8_GENERAL_CI",注意字符集的字母都要大寫) localAddress 此IP用于TCP連接(可選) socketPath 連接到unix域路徑,當(dāng)使用 host 和 port 時(shí)會(huì)被忽略 timezone 時(shí)區(qū)(默認(rèn):"local") connectTimeout 連接超時(shí)(默認(rèn):不限制;單位:毫秒) stringifyObjects 是否序列化對(duì)象 typeCast 是否將列值轉(zhuǎn)化為本地JavaScript類型值 (默認(rèn):true) queryFormat 自定義query語(yǔ)句格式化方法 supportBigNumbers 數(shù)據(jù)庫(kù)支持bigint或decimal類型列時(shí),需要設(shè)此option為true (默認(rèn):false)bigNumberStrings supportBigNumbers和bigNumberStrings啟用 強(qiáng)制bigint或decimal列以JavaScript字符串類型返回(默認(rèn):false) dateStrings 強(qiáng)制timestamp,datetime,data類型以字符串類型返回,而不是JavaScript Date類型(默認(rèn):false) debug 開啟調(diào)試(默認(rèn):false) multipleStatements 是否許一個(gè)query中有多個(gè)MySQL語(yǔ)句 (默認(rèn):false) flags 用于修改連接標(biāo)志 ssl 使用ssl參數(shù)(與crypto.createCredenitals參數(shù)格式一至)或一個(gè)包含ssl配置文件名稱的字符串,目前只捆綁Amazon RDS的配置文件
MongoDB是一種文檔導(dǎo)向數(shù)據(jù)庫(kù)管理系統(tǒng),由C++撰寫而成。MongoDB 教程。 安裝驅(qū)動(dòng)
$ cnpm install mongodb增刪改查
要在 MongoDB 中創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),首先我們需要?jiǎng)?chuàng)建一個(gè) MongoClient 對(duì)象,然后配置好指定的 URL 和 端口號(hào)。
如果數(shù)據(jù)庫(kù)不存在,MongoDB 將創(chuàng)建數(shù)據(jù)庫(kù)并建立連接。
創(chuàng)建連接
var MongoClient = require("mongodb").MongoClient; var url = "mongodb://localhost:27017/mydb"; MongoClient.connect(url, function(err, db) { if (err) throw err; console.log("數(shù)據(jù)庫(kù)已創(chuàng)建!"); db.close(); });
創(chuàng)建集合
我們可以使用 createCollection() 方法來(lái)創(chuàng)建集合: 創(chuàng)建集合
var MongoClient = require("mongodb").MongoClient; var url = "mongodb://localhost:27017/mydb"; MongoClient.connect(url, function (err, db) { if (err) throw err; console.log("數(shù)據(jù)庫(kù)已創(chuàng)建"); var dbase = db.db("mydb"); dbase.createCollection("runoob", function (err, res) { if (err) throw err; console.log("創(chuàng)建集合!"); db.close(); }); });
數(shù)據(jù)庫(kù)操作( CURD )
與 MySQL 不同的是 MongoDB 會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)和集合,所以使用前我們不需要手動(dòng)去創(chuàng)建。 插入數(shù)據(jù) 以下實(shí)例我們連接數(shù)據(jù)庫(kù)runoob 的 site 表,并插入兩條數(shù)據(jù):
插入數(shù)據(jù)
var MongoClient = require("mongodb").MongoClient; var DB_CONN_STR = "mongodb://localhost:27017/runoob"; # 數(shù)據(jù)庫(kù)為 runoob var insertData = function(db, callback) { //連接到表 site var collection = db.collection("site"); //插入數(shù)據(jù) var data = [{"name":"菜鳥教程","url":"www.runoob.com"},{"name":"菜鳥工具","url":"c.runoob.com"}]; collection.insert(data, function(err, result) { if(err) { console.log("Error:"+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("連接成功!"); insertData(db, function(result) { console.log(result); db.close(); }); });
執(zhí)行以下命令輸出就結(jié)果為:
$ node test.js //連接成功! { result: { ok: 1, n: 2 }, ops: [ { name: "菜鳥教程", url: "www.runoob.com", _id: 58c25e13a08de70d3b9d4116 }, { name: "菜鳥工具", url: "c.runoob.com", _id: 58c25e13a08de70d3b9d4117 } ], insertedCount: 2, insertedIds: [58c25e13a08de70d3b9d4116, 58c25e13a08de70d3b9d4117] }
從輸出結(jié)果來(lái)看,數(shù)據(jù)已插入成功。
我們也可以打開 MongoDB 的客戶端查看數(shù)據(jù),如:
show dbs admin 0.000GB local 0.000GB runoob 0.000GB # 自動(dòng)創(chuàng)建了 runoob 數(shù)據(jù)庫(kù) show tables site # 自動(dòng)創(chuàng)建了 site 集合(數(shù)據(jù)表) db.site.find() # 查看集合中的數(shù)據(jù) { "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鳥教程", "url" : "www.runoob.com" } { "_id" : ObjectId("58c25f300cd56e0d7ddfc0c9"), "name" : "菜鳥工具", "url" : "c.runoob.com" }
查詢數(shù)據(jù)
以下實(shí)例檢索 name 為 "菜鳥教程" 的實(shí)例:
var MongoClient = require("mongodb").MongoClient; var DB_CONN_STR = "mongodb://localhost:27017/runoob"; var selectData = function(db, callback) { //連接到表 var collection = db.collection("site"); //查詢數(shù)據(jù) var whereStr = {"name":"菜鳥教程"}; collection.find(whereStr).toArray(function(err, result) { if(err) { console.log("Error:"+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("連接成功!"); selectData(db, function(result) { console.log(result); db.close(); }); });
執(zhí)行以下命令輸出就結(jié)果為:
連接成功!
[ { _id: 58c25f300cd56e0d7ddfc0c8, name: "菜鳥教程", url: "www.runoob.com" } ]
更新數(shù)據(jù)
我們也可以對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行修改,以下實(shí)例將 name 為 "菜鳥教程" 的 url 改為 https://www.runoob.com:
var MongoClient = require("mongodb").MongoClient; var DB_CONN_STR = "mongodb://localhost:27017/runoob"; var updateData = function(db, callback) { //連接到表 var collection = db.collection("site"); //更新數(shù)據(jù) var whereStr = {"name":"菜鳥教程"}; var updateStr = {$set: { "url" : "https://www.runoob.com" }}; collection.update(whereStr,updateStr, function(err, result) { if(err) { console.log("Error:"+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("連接成功!"); updateData(db, function(result) { console.log(result); db.close(); }); });
執(zhí)行成功后,進(jìn)入 mongo 管理工具查看數(shù)據(jù)已修改:
db.site.find() { "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鳥教程", "url" : "https://www.runoob.com" } { "_id" : ObjectId("58c25f300cd56e0d7ddfc0c9"), "name" : "菜鳥工具", "url" : "c.runoob.com" }
刪除數(shù)據(jù)
以下實(shí)例將 name 為 "菜鳥工具" 的數(shù)據(jù)刪除 :
var MongoClient = require("mongodb").MongoClient; var DB_CONN_STR = "mongodb://localhost:27017/runoob"; var delData = function(db, callback) { //連接到表 var collection = db.collection("site"); //刪除數(shù)據(jù) var whereStr = {"name":"菜鳥工具"}; collection.remove(whereStr, function(err, result) { if(err) { console.log("Error:"+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("連接成功!"); delData(db, function(result) { console.log(result); db.close(); }); });
執(zhí)行成功后,進(jìn)入 mongo 管理工具查看數(shù)據(jù)已刪除:
db.site.find() { "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鳥教程", "url" : "https://www.runoob.com" }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/19270.html
創(chuàng)業(yè)團(tuán)隊(duì)擼 Node 前言 大家好,我是 Scott,2016 年 9 月 25 日在杭州大搜車總部舉行的杭州 Node Party 上分享了一個(gè)話題 - 《創(chuàng)業(yè)公司擼 Node》 ,分享之后我以文字的形式又記錄了一遍,分享給沒(méi)有與會(huì)的朋友,也方便大家通過(guò)搜索引擎者一些技術(shù)社區(qū)平臺(tái)來(lái)看到這篇文章。 寫在前面,感謝芋頭哥和大搜車,給了我這個(gè)機(jī)會(huì)跟大家在大搜車面基,說(shuō)實(shí)話,從我出道以來(lái),這還真的是我...
摘要:客戶端可能需要等待服務(wù)器釋放可用的線程去處理其請(qǐng)求處理阻塞式的任務(wù)時(shí)浪費(fèi)時(shí)間的架構(gòu)單線程事件循環(huán)不遵循請(qǐng)求響應(yīng)多線程無(wú)狀態(tài)模型。它采用單線程與事件循環(huán)模型。 showImg(https://segmentfault.com/img/remote/1460000017402136); 這篇譯章探究了NodeJS的架構(gòu)和單線程事件循環(huán)模型。我們將在本文中討論NodeJS如何在底層工作,它遵...
摘要:很多同學(xué)可能都聽說(shuō)過(guò),并且知道他是可以運(yùn)行在服務(wù)器上的,但是他的使用場(chǎng)景可能大家并不是很清楚,最近也在看學(xué)習(xí),就做了一下小總結(jié)的優(yōu)勢(shì)現(xiàn)在的很多的服務(wù)器端的語(yǔ)言有什么問(wèn)題呢,現(xiàn)在的服務(wù)器端的語(yǔ)言在用戶訪問(wèn)服務(wù)器時(shí),為每個(gè)用戶鏈接創(chuàng)建了一個(gè)線程 很多同學(xué)可能都聽說(shuō)過(guò)nodejs,并且知道他是可以運(yùn)行在服務(wù)器上的javascript,但是他的使用場(chǎng)景可能大家并不是很清楚,最近也在看學(xué)習(xí)nod...
摘要:沒(méi)有耐心閱讀的同學(xué),可以直接前往學(xué)習(xí)全棧最后一公里。我下面會(huì)羅列一些,我自己錄制過(guò)的一些項(xiàng)目,或者其他的我覺(jué)得可以按照這個(gè)路線繼續(xù)深入學(xué)習(xí)的項(xiàng)目資源。 showImg(https://segmentfault.com/img/bVMlke?w=833&h=410); 本文技術(shù)軟文,閱讀需謹(jǐn)慎,長(zhǎng)約 7000 字,通讀需 5 分鐘 大家好,我是 Scott,本文通過(guò)提供給大家學(xué)習(xí)的方法,...
摘要:在前面的節(jié)課程里面,我們已經(jīng)基本學(xué)習(xí)完了的知識(shí),達(dá)到基礎(chǔ)入門的要求。英語(yǔ)的直譯就是表現(xiàn)層狀態(tài)轉(zhuǎn)移。的特點(diǎn)不加密用戶可刪除可被修改依賴于用戶禁用或清除時(shí),讀取出錯(cuò)。下節(jié),會(huì)開始學(xué)習(xí)框架。 在前面的12節(jié)課程里面,我們已經(jīng)基本學(xué)習(xí)完了nodejs的知識(shí),達(dá)到基礎(chǔ)入門的要求。那為什么會(huì)在這節(jié)說(shuō)下使用nodejs來(lái)實(shí)現(xiàn)一些功能,而不繼續(xù)往下講呢?原因有2:1.前面講地都是理論知識(shí),碼代碼比較少...
閱讀 3421·2021-10-20 13:49
閱讀 2793·2021-09-29 09:34
閱讀 3691·2021-09-01 11:29
閱讀 3081·2019-08-30 11:01
閱讀 838·2019-08-29 17:10
閱讀 866·2019-08-29 12:48
閱讀 2777·2019-08-29 12:40
閱讀 1348·2019-08-29 12:30