uni-app clientDB请求封装
uni-app clientDB请求封装
每次使用clientDB请求,无论是add,remove等操作后都需要弹框是否成功失败,或者其他统一的操作!
想要个类似request请求的封装,注入到VUE中!
直接this.$clientDB.add(dbCollectionName,data)
或者this.$clientDB.remove(dbCollectionName,data)
3 回复
自己封一个不就好了
如果使用uniCloud-db组件的方法,是默认包含弹框这些的,当然也有参数控制可以去掉。
js api没有封装
在 uni-app
中,使用 clientDB
进行本地数据库操作是一个常见的需求。为了封装 clientDB
请求,你可以创建一个专门的模块来处理所有的数据库操作。以下是一个简单的示例,展示如何封装 clientDB
请求。
首先,确保你已经在 manifest.json
中启用了 clientDB
功能。
接下来,创建一个名为 db.js
的模块文件,用于封装数据库操作:
// db.js
const db = uni.clientDB({
adapter: 'sqlite', // 使用 SQLite 作为数据库适配器
name: 'myDatabase.db', // 数据库文件名
success: function () {
console.log('Database opened successfully');
},
fail: function (err) {
console.error('Failed to open database:', err);
}
});
// 创建表(示例)
function createTable() {
const sql = `
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL
);
`;
return db.exec(sql);
}
// 插入数据
function insertUser(name, age) {
const sql = `INSERT INTO users (name, age) VALUES (?, ?);`;
return db.exec(sql, [name, age]);
}
// 查询数据
function queryUsers() {
const sql = `SELECT * FROM users;`;
return db.exec(sql).then(res => res.result.rows);
}
// 更新数据
function updateUser(id, name, age) {
const sql = `UPDATE users SET name=?, age=? WHERE id=?;`;
return db.exec(sql, [name, age, id]);
}
// 删除数据
function deleteUser(id) {
const sql = `DELETE FROM users WHERE id=?;`;
return db.exec(sql, [id]);
}
module.exports = {
createTable,
insertUser,
queryUsers,
updateUser,
deleteUser
};
然后,在你的页面或组件中引入并使用这个封装好的数据库模块:
// pages/index/index.js
const dbOperations = require('../../db.js');
Page({
onLoad() {
dbOperations.createTable().then(() => {
return dbOperations.insertUser('Alice', 30);
}).then(() => {
return dbOperations.queryUsers();
}).then(users => {
console.log('Users:', users);
}).catch(err => {
console.error('Database error:', err);
});
}
});
以上代码展示了如何封装 clientDB
请求,并在页面加载时创建表、插入数据并查询数据。你可以根据实际需求扩展这个模块,添加更多的数据库操作方法。