<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
        主站蜘蛛池模板: h在线观看视频免费网站| 久久这里只精品国产免费10| 国产日本一线在线观看免费| 亚洲av无码一区二区三区不卡| 91免费福利视频| 久久亚洲精品中文字幕三区| 免费国产成人午夜在线观看| 亚洲AV日韩AV天堂久久| 日韩精品无码免费一区二区三区| 婷婷久久久亚洲欧洲日产国码AV | 亚洲AV日韩精品一区二区三区| 亚洲av无码成人精品区一本二本| 免费观看美女裸体网站| 西西人体大胆免费视频| 亚洲欧洲日产国码高潮αv| 热99RE久久精品这里都是精品免费| 亚洲AV永久纯肉无码精品动漫| 37pao成人国产永久免费视频| 久久精品国产亚洲av麻豆蜜芽| 麻豆国产人免费人成免费视频| 亚洲av日韩av永久无码电影| 中文字幕亚洲不卡在线亚瑟| 国产日韩AV免费无码一区二区| 亚洲黄色在线观看| 日韩成人免费在线| 亚州**色毛片免费观看| 亚洲a一级免费视频| 最近免费中文字幕4| 人人公开免费超级碰碰碰视频| 亚洲国产综合专区电影在线| 成人午夜视频免费| 精品国产免费一区二区三区| 亚洲毛片一级带毛片基地| 国产精品嫩草影院免费| 你是我的城池营垒免费看| 精品亚洲AV无码一区二区三区 | 久久久久亚洲AV成人网人人网站 | 午夜不卡久久精品无码免费| 国产精品无码亚洲精品2021| 亚洲成色在线综合网站| 免费看AV毛片一区二区三区|