我正在尝试为我的应用创建蒸气API。在我的本地计算机(Mac OS)上,我所有的代码和API均正常运行,但是当我将其上传到ubuntu服务器时,它崩溃了...
我已经做了以下代码:
vapor clean
vapor update
vapor build
这些命令都不返回任何类型的错误,但是当我运行蒸气时,会发生以下情况:
root@rt-server:/usr/local/uprising/server# vapor run
Running server ...
root@rt-server:/usr/local/uprising/server#
进行一些搜索并尝试解决我的问题,我发现如果注释以下代码(configure.swift),则可以使蒸气运行:
// Register Mongo Client
let client = try! MongoClient()
let db = client.db("myDB")
let collection:MongoCollection<Document>
do {
collection = try db.createCollection("myCollection")
} catch {
collection = db.collection("myCollection")
}
// Create an unique index on timestamp
// because I expect only one daily
let indexOptions = IndexOptions(name: "timestamp", unique: true)
let model = IndexModel(keys: [ "timestamp": 1] , options: indexOptions)
do {
try collection.createIndex(model)
} catch {
print("Index already exist!")
}
services.register(client)
我有一些问题也许可以帮助我弄清楚如何解决我的问题:
如何在ubuntu上使用命令行调试蒸气?在我的Mac中,当我使用xcode时很容易...
我可以测试我的MongoDB C驱动程序是否正确安装吗?
有人知道我在做什么错吗?它在我的Mac上完美运行...
对不起,我很抱歉...如果有人知道如何帮助我,我将不胜感激!
答案 0 :(得分:1)
我是MongoSwift的开发人员之一。
您如何安装C驱动程序?
崩溃可能来自您执行try! MongoClient()
的第一行,您可能还希望尝试将其放入try / catch。
也请注意,您可以将收藏代码简化为:
let collection = db.collection("myCollection")
如果您要使用非默认选项创建集合,则仅需要使用createCollection
。否则,将在您第一次使用该集合时自动创建该集合(在这种情况下,当您添加索引时)。
答案 1 :(得分:0)
swift MacOS运行时环境!= swift Linux运行时环境。这意味着,在MacOS中构建并运行完美的代码很少在Linux中编译。我实现了几个Linux swift项目,我的建议是:从项目开始就在Linux中开发Linux swift项目! 对于您的情况:
1)在大多数情况下,Linux swift项目使用docker在生产环境中运行。
2)获取具有与Docker容器相同环境的Linux主机
3)将您的项目迁移到Linux主机
4)在Linux主机中,您可以对其进行构建,执行和调试。
另外,对于我需要访问MongoDB的Linux Swift项目之一,我测试了几个框架,MongoKitten对我来说是最好的。