【发布时间】:2020-09-28 04:15:58
【问题描述】:
- 我正在将 JSON 数据 从我的 iOS 应用程序传递到我的后端 MongoDB 服务器
- JSON 数据 包含两个父字段 userData 和 queryData
- 我通过 POST 请求将其作为
req.body传递,并以req.body.userData和req.body.queryData检索服务器中的数据 - 我使用 swift CODABLE 将此对象编码为 JSON 并将其发送到服务器
一切正常。我能够提取req.body.userData 并使用它。我不明白的是,如何从 req.body.queryData 中提取 mongo 查询 并将其传递给 mongo find() 方法?
例如 - 我如何通过
{
"fieldOne": {"$in": [1, 2, 3]},
"fieldTwo": {"$ne": "Admin"}
}
以上是MongoDB语法过滤数据。如何让我的 codable 结构发送这种格式?现在我只是将结构声明为 string。我是使用服务器端和 JSONS 的新手。
这是我的结构 - 就像我说的,req.body.userData 工作正常
struct QueryData: Codable {
var fieldOne: String
var fieldTwo: String
}
【问题讨论】:
-
你的例子不是真正的 JSON 字符串,它应该是 { "fieldOne": {"$in": [1, 2, 3]}, "fieldTwo": {"$ne": “管理员”} }
-
@ChaolongLiao 是的,没错。我发布了 NodeJS 格式。在 NodeJS 中,字段值是不带引号的。现在将编辑它
-
也许您可以使用这个库找到一些解决方案:github.com/mongodb/mongo-swift-driver。希望您没有直接从 iOS 应用程序执行任何 mongodb 查询
-
@Zyigh 这个驱动似乎直接访问了 mongo 数据库。是的,我没有直接从 ios 应用程序执行任何查询或访问数据库。服务器处理它。只是想弄清楚如何将过滤器选项发送到服务器
-
@Archid 我在一个 Swift 后端项目中使用了那个库,它对于我们想要做的事情来说已经足够了。我无法告诉您对应用程序大小的影响,但它可能是一个有用的解决方法,因为类型
BSONDocument实现了Codable并且可以轻松编码。我没有将其写为答案,因为添加整个库以仅使用一种数据结构可能有点“野蛮”,但是当您必须处理类似 MongoDB json 的格式时,它真的很方便
标签: ios swift mongodb mongodb-query