1.Node.js如何对SQLite的async/await封装详解
2.求广联达全套视频教程
3.Windows下MinGW-w64的安装
Node.js如何对SQLite的async/await封装详解
前言
本文主要给大家介绍的是关于Node.js对SQLite的async/await封装的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧
用于将每个SQLite函数同步化,并可以用await的接口。
注意:需要SQLite for Node模块和Node.js 8.0+,virtualenv源码安装并支持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,鸿运ssc源码 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来处理每一行的内容。
你可以在每个方法的情况下进行验证,即在程序显示“完成”之前处理返回的每一行。原始异步方法不会出现这种情况。
参考并翻译自:/sql/sqlite-async-await.php
总结
求广联达全套视频教程
1. 广联达安装算量软件——电气工程专业学习视频,您可以通过以下链接下载:/c0xfzect
2. 广联达安装算量软件——给排水工程专业学习视频,请点击以下链接进行下载:/c0e6mzgza4
3. 广联达安装算量软件——通风空调工程专业学习源代码视频,可以通过此链接下载:/c0qiqzdet4
4. 广联达安装算量软件——消防工程专业学习视频,源码在线识别请使用以下链接进行下载:/clwdl
5. 广联达CAD导图技巧视频学习,您可以在此链接下载:/c0ixxfbs
6. 广联达钢筋学习视屏(上),请点击以下链接下载:/c0ikjydo1t
7. 广联达钢筋学习视频(下),您可以通过此链接下载:/cq6l1qw
8. 广联达图形算量软件GCL计算规则分析与使用技巧学习视频,请使用以下链接下载:/c0mrgagq
9. 广联达软件计价学习视频,可以通过此链接下载:/c0amy9ylzn
. 广联达图形算量软件GCL,您可以通过以下链接下载:/c0te9eg5b2
Windows下MinGW-w的安装
MinGW的全称是:Minimalist GNU on Windows。它是嗨淘源码将经典的C语言编译器GCC移植到了Windows平台下,并包含了WinAPI,因此可以将源代码编译为可在Windows中运行的可执行程序。
MinGW还支持一些Windows不具备的Linux平台下的开发工具。简单来说,MinGW就是GCC的Windows版本。
MinGW-w与MinGW的区别在于,MinGW只能编译生成位可执行程序,而MinGW-w则可以编译生成位或位可执行程序。因此,MinGW已经被MinGW-w所取代,MinGW也已经停止了更新,内置的GCC停留在4.8.1版本,而MinGW-w内置的GCC则更新到了8.1.0版本。
MinGW-w的下载方式有两种:懒人模式(通过百度云直接下载)和官方下载。懒人模式的链接为pan.baidu.com/s/1aMyeF4...,提取码为mcv9。官方下载的步骤如下:
第一步:访问官方地址mingw-w.org/doku.php。
第二步:选择Downloads下载。
第三步:进入SourceForge下载页面,选择MinGW-W-install.exe下载。
MinGW-w的安装步骤如下:
第一步:双击MinGW-W-install.exe。
第二步:选择安装信息,包括Version、Architechture、Threads、Exception等。
第三步:最终选择安装信息,并一路下一步。
第四步:完成安装。
配置环境变量:将安装的MinGW-w的bin文件夹地址复制到新增的空白变量位置里,即可完成MinGW-w的配置工作。
验证安装成功:打开cmd窗口,输入gcc -v并按回车键,如果出现版本信息,则表示安装成功。