这是一个简单的库,用于在 Swift 中使用 CouchDB。
这个库唯一的依赖项是 async-http-client
您可以在这里找到文档、示例,甚至教程。
添加到你的 Package.swift
文件的 dependencies
键值中。
dependencies: [
.package(url: "https://github.com/makoni/couchdb-vapor.git", from: "1.6.0"),
]
// use default params
let myClient = CouchDBClient()
// provide your own params
let couchDBClient = CouchDBClient(
couchProtocol: .http,
couchHost: "127.0.0.1",
couchPort: 5984,
userName: "admin",
userPassword: "myPassword"
)
如果您不想在代码中包含密码,可以在命令行中传递 COUCHDB_PASS
参数。 例如,您可以运行你的服务器端 Swift 项目
COUCHDB_PASS=myPassword /path/.build/x86_64-unknown-linux-gnu/release/Run
只需使用没有 userPassword 参数的初始化器
let couchDBClient = CouchDBClient(
couchProtocol: .http,
couchHost: "127.0.0.1",
couchPort: 5984,
userName: "admin"
)
定义你的文档模型
// Example struct
struct ExpectedDoc: CouchDBRepresentable {
var name: String
var _id: String?
var _rev: String?
}
var testDoc = ExpectedDoc(name: "My name")
try await couchDBClient.insert(
dbName: "databaseName",
doc: &testDoc
)
print(testDoc) // testDoc has _id and _rev values now
// get data from a database by document ID
var doc: ExpectedDoc = try await couchDBClient.get(fromDB: "databaseName", uri: "documentId")
print(doc)
// Update value
doc.name = "Updated name"
try await couchDBClient.update(
dbName: testsDB,
doc: &doc
)
print(doc) // doc will have updated name and _rev values now
删除数据
let response = try await couchDBClient.delete(fromDb: "databaseName", doc: doc)
// or by uri
let response = try await couchDBClient.delete(fromDb: "databaseName", uri: doc._id,rev: doc._rev)
获取所有数据库示例
let dbs = try await couchDBClient.getAllDBs()
print(dbs)
// prints: ["_global_changes", "_replicator", "_users", "yourDBname"]
通过选择器查找数据库中的文档
let selector = ["selector": ["name": "Sam"]]
let docs: [ExpectedDoc] = try await couchDBClient.find(in: "databaseName", selector: selector)
print(docs)
这是一个简单的 Vapor 教程。