<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Node.js如何對SQLite的async/await封裝詳解

        來源:懂視網 責編:小采 時間:2020-11-27 22:00:54
        文檔

        Node.js如何對SQLite的async/await封裝詳解

        Node.js如何對SQLite的async/await封裝詳解:前言 本文主要給大家介紹的是關于Node.js對SQLite的async/await封裝的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧 用于將每個SQLite函數同步化,并可以用await的接口。 注意:需要SQLite for Node模塊和Node
        推薦度:
        導讀Node.js如何對SQLite的async/await封裝詳解:前言 本文主要給大家介紹的是關于Node.js對SQLite的async/await封裝的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧 用于將每個SQLite函數同步化,并可以用await的接口。 注意:需要SQLite for Node模塊和Node

        前言

        本文主要給大家介紹的是關于Node.js對SQLite的async/await封裝的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧

        用于將每個SQLite函數同步化,并可以用await的接口。

        注意:需要SQLite for Node模塊和Node.js 8.0+,并支持async / await。

        SQLite最常用作本地或移動應用程序的存儲單元,當需要從程序的各個部分訪問數據時,回調不是最佳解決方案。

        為了在程序程序中更自然地訪問數據,我編寫了一個將回調轉換為promises的接口,因此我們可以將每個函數與await關鍵字一起使用。 它不是異步函數的替代品,它是一個補充,可以將原始函數和同步函數一起使用。

        aa-sqlite模塊

        SQLite的接口是一個名為aa-sqlite的模塊,您必須將其存儲在應用程序的node_modules部分中。這是完整的源代碼

        const sqlite3 = require('sqlite3').verbose()
        var db
         
        exports.db = db
         
        exports.open=function(path) {
         return new Promise(function(resolve) {
         this.db = new sqlite3.Database(path,
         function(err) {
         if(err) reject("Open error: "+ err.message)
         else resolve(path + " opened")
         }
         ) 
         })
        }
         
        // any query: insert/delete/update
        exports.run=function(query) {
         return new Promise(function(resolve, reject) {
         this.db.run(query,
         function(err) {
         if(err) reject(err.message)
         else resolve(true)
         })
         }) 
        }
         
        // first row read
        exports.get=function(query, params) {
         return new Promise(function(resolve, reject) {
         this.db.get(query, params, function(err, row) {
         if(err) reject("Read error: " + err.message)
         else {
         resolve(row)
         }
         })
         })
        }
         
        // set of rows read
        exports.all=function(query, params) {
         return new Promise(function(resolve, reject) {
         if(params == undefined) params=[]
         
         this.db.all(query, params, function(err, rows) {
         if(err) reject("Read error: " + err.message)
         else {
         resolve(rows)
         }
         })
         })
        }
         
        // each row returned one by one
        exports.each=function(query, params, action) {
         return new Promise(function(resolve, reject) {
         var db = this.db
         db.serialize(function() {
         db.each(query, params, function(err, row) {
         if(err) reject("Read error: " + err.message)
         else {
         if(row) {
         action(row)
         } 
         }
         })
         db.get("", function(err, row) {
         resolve(true)
         }) 
         })
         })
        }
         
        exports.close=function() {
         return new Promise(function(resolve, reject) {
         this.db.close()
         resolve(true)
         })
        }

        使用示例

        下面的示例展示了aa-sqlite的每個功能的示例。在第一部分中,我們打開一個數據庫,添加一個表并用一些行填充該表。然后關閉數據庫,我們再次打開它并執行一些同步查詢。

        const fs = require("fs")
        const sqlite = require("aa-sqlite")
         
        async function mainApp() {
         
         console.log(await sqlite.open('./users.db'))
         
         // Adds a table
         
         var r = await sqlite.run('CREATE TABLE users(ID integer NOT NULL PRIMARY KEY, name text, city text)')
         if(r) console.log("Table created")
         
         // Fills the table
         
         let users = {
         "Naomi": "chicago",
         "Julia": "Frisco",
         "Amy": "New York",
         "Scarlett": "Austin",
         "Amy": "Seattle"
         }
         
         var id = 1
         for(var x in users) {
         var entry = `'${id}','${x}','${users[x]}'`
         var sql = "INSERT INTO users(ID, name, city) VALUES (" + entry + ")"
         r = await sqlite.run(sql)
         if(r) console.log("Inserted.")
         id++ 
         }
         
         // Starting a new cycle to access the data
         
         await sqlite.close();
         await sqlite.open('./users.db')
         
         console.log("Select one user:")
         
         var sql = "SELECT ID, name, city FROM users WHERE name='Naomi'"
         r = await sqlite.get(sql)
         console.log("Read:", r.ID, r.name, r.city)
         
         console.log("Get all users:")
         
         sql = "SELECT * FROM users"
         r = await sqlite.all(sql, [])
         r.forEach(function(row) {
         console.log("Read:", row.ID, row.name, row.city) 
         })
         
         console.log("Get some users:")
         
         sql = "SELECT * FROM users WHERE name=?"
         r = await sqlite.all(sql, ['Amy'])
         r.forEach(function(row) {
         console.log("Read:", row.ID, row.name, row.city) 
         })
         
         console.log("One by one:")
         
         sql = "SELECT * FROM users"
         r = await sqlite.each(sql, [], function(row) {
         console.log("Read:", row.ID, row.name, row.city) 
         })
         
         if(r) console.log("Done.")
         
         sqlite.close();
        }
         
        try {
         fs.unlinkSync("./users.db")
        }
        catch(e) {
        }
         
        mainApp()

        由于all方法返回一個row數組,我們使用forEach來處理每一行的內容。

        你可以在每個方法的情況下進行驗證,即在程序顯示“完成”之前處理返回的每一行。原始異步方法不會出現這種情況。

        參考并翻譯自:https://www.scriptol.com/sql/sqlite-async-await.php

        總結

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Node.js如何對SQLite的async/await封裝詳解

        Node.js如何對SQLite的async/await封裝詳解:前言 本文主要給大家介紹的是關于Node.js對SQLite的async/await封裝的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧 用于將每個SQLite函數同步化,并可以用await的接口。 注意:需要SQLite for Node模塊和Node
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 你懂的免费在线观看| 风间由美在线亚洲一区| 免费无码又爽又刺激网站| 国产综合精品久久亚洲| 国产精品黄页免费高清在线观看| 三年片免费观看大全国语| 亚洲欧洲久久av| 香蕉免费在线视频| 亚洲国产精品福利片在线观看| 很黄很污的网站免费| 久久精品国产亚洲av影院| 在线观看的免费网站| 激情综合亚洲色婷婷五月| 成人毛片免费视频| 免费无码专区毛片高潮喷水 | 亚洲成人中文字幕| 最近最新高清免费中文字幕| 亚洲最大中文字幕| 成人激情免费视频| 国产亚洲福利精品一区二区| 亚洲乱码国产一区网址| 在线观看片免费人成视频无码| 久久精品国产亚洲AV无码偷窥| 999国内精品永久免费观看| 色欲色欲天天天www亚洲伊| 五月婷婷亚洲综合| 日韩免费电影网址| 亚洲H在线播放在线观看H| 国产免费午夜a无码v视频| WWW免费视频在线观看播放| 亚洲成年人在线观看| 成年大片免费视频| 一级一片免费视频播放| 久久精品国产亚洲AV嫖农村妇女| 国产福利视精品永久免费| 国产精品久久久久久亚洲影视| 亚洲av无码成人黄网站在线观看 | 国产精品亚洲综合天堂夜夜| 国外亚洲成AV人片在线观看| 最近中文字幕国语免费完整 | eeuss影院免费92242部|