首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Vapor 4 Fluent create Model不会将其保存到数据库

Vapor 4是一个流行的开源服务器端Swift框架,用于构建Web应用程序和API。Fluent是Vapor的数据库工具包,用于处理与数据库的交互。在Vapor 4中,使用Fluent创建的模型对象默认情况下不会自动保存到数据库中。

要将Fluent创建的模型保存到数据库中,需要执行以下步骤:

  1. 定义模型:首先,需要创建一个遵循Fluent的Model协议的模型对象。模型对象通常是一个Swift结构体或类,它定义了要保存到数据库中的数据的属性和行为。
  2. 创建数据库表:使用Fluent的迁移功能,可以创建数据库表以存储模型对象的数据。迁移是一个用于定义数据库模式的Swift代码文件,它描述了如何创建、修改或删除数据库表和列。
  3. 执行迁移:通过运行Vapor的命令行工具,可以执行迁移并将模型对象的结构同步到数据库中。执行迁移会自动创建或更新数据库表,以便与模型对象的定义保持一致。
  4. 保存模型:在代码中,通过使用Fluent的save()方法,可以将模型对象保存到数据库中。这将触发将模型对象的属性值插入到相应的数据库表中。

以下是一个示例代码,演示了如何使用Vapor 4和Fluent将模型保存到数据库中:

代码语言:txt
复制
import Vapor
import Fluent

final class User: Model, Content {
    static let schema = "users"
    
    @ID(key: .id)
    var id: UUID?
    
    @Field(key: "name")
    var name: String
    
    init() {}
    
    init(id: UUID? = nil, name: String) {
        self.id = id
        self.name = name
    }
}

func routes(_ app: Application) throws {
    app.post("users") { req -> EventLoopFuture<User> in
        let user = try req.content.decode(User.self)
        return user.save(on: req.db).map { user }
    }
}

在上面的示例中,我们定义了一个名为User的模型对象,它具有一个name属性。在路由处理程序中,我们通过解码请求中的JSON数据来创建一个User对象,并使用save()方法将其保存到数据库中。

对于Vapor 4和Fluent的更多详细信息和使用方法,请参考腾讯云的Vapor产品文档和Fluent产品文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Vapor奇幻之旅(06 PostgreSQL)

在上一篇Vapor奇幻之旅(05 Fluent)中,我介绍了如何使用Fluent创建数据模型,并在自带的内存数据库中进行增删改查操作。...关于数据库的用法这篇文章不会覆盖太多,感兴趣的朋友可以去看看相关的文章。...PostgreSQL Provider为我们提供了连接到数据库的driver,就像pgAdmin 4一样使我么你的程序能够连接到数据库进行相应的操作。...到底创建了什么表: image.png 看看fluent表里有些什么 image.png 可以看到fluent表中包含我们创建的对象,其中Post是创建程序默认的model,可以删掉,Quotes是我们自定义的一个...model,至此我们在没有写一句sql的情况下创建了数据库的表,并完成了增删改查操作。

1.2K20

Vapor奇幻之旅(05 Fluent)

在上一篇Vapor奇幻之旅(04Routing)中我介绍了Routing的写法,作为一个web应用,数据库是必不可少的,而Fluent则是管理数据的一个抽象层,可以支持数据库的增删改查等操作,默认的FluentProvider...支持sqlite数据库,也就是说在没有任何数据库配置的情况下,可以通过Fluent Provider中的内存数据库来快速加载SQLite数据库,这样做的好处是可以轻松的进行接口测试。...目前Vapor支持的数据库如下: 数据库类型 Key Package Class 是否来自官方 Memory memory Fluent Provider Fluent.MemoryDriver Yes...MySQL,稍显遗憾,开发团队最近都在进行Vapor 3的开发,相信不久后就可以有更多的数据库类型支持了,而且由于Fluent的抽象的特性,只要有相应的驱动,适配任何数据库我想只是时间问题。...class Quotes: Model { // 这个属性能让Fluent存储额外的信息,如这个model的id let storage = Storage()

1.2K30
  • Vapor奇幻之旅(01开始)

    我想说作为开发者语言只是我们的工具,如果大家都用不粘锅来炒菜,我用用铁锅并不会影响菜的口感,也许还会更健康。...但是年年来一个大更新,开发工具,第三方库,语法,时时都在刷新我的认知,从swift1写到了swift4才能感觉到一个语言的不断完善,越来越多的特性,越来越简洁的api,越来越多的过去不能做的现在可以了。...vapor也在一个月前支持了swift4,又到了一个新的境界。 最近购入一个阿里云实例,开始在上面玩玩被我冷落的vapor,作为一个能够跟上苹果脚步更新的服务端库,我也没有理由落下脚步。...: API --template=api 使用Fluent数据库提供json的api Web --template=web 使用leaf模版创建的html网站 Auth --template=auth...奇幻之旅(05 Fluent) Vapor奇幻之旅(06 PostgreSQL) Vapor奇幻之旅(07 连接服务端PostgreSQL) Vapor奇幻之旅(08 连接服务端MongoDB)

    1K20

    Vapor奇幻之旅(07 连接服务端PostgreSQL)

    下面是一些例子: IPv4 172.20.143.89/32 代表一个单独的主机(ip地址后加/32) 172.20.143.0/24 代表一个小型网络 10.6.0.0/16...4、最后修改 /etc/postgresql/10/main/postgresql.conf 找到 #-------------------------------------------------...Shooting 1、服务端执行psql postgres提示: psql: FATAL: role "root" does not exist 这是因为在ubuntu系统安装postgresql的时候,并不会像在...关于Vapor其他知识,可以参考以下文章: Vapor奇幻之旅(01开始) Vapor奇幻之旅(02部署) Vapor奇幻之旅(03上手) Vapor奇幻之旅(04Routing) Vapor奇幻之旅...(05 Fluent) Vapor奇幻之旅(06 PostgreSQL) Vapor奇幻之旅(07 连接服务端PostgreSQL) Vapor奇幻之旅(08 连接服务端MongoDB) Vapor

    1.2K20

    无需 XML Mapper,超级 Mybatis 代码即是 SQL 操作!真香?

    三者对比总结 Fluent Mybatis 实战 引入依赖 创建表 创建数据库表对应的 Entity 类 配置数据源 测试 总结 ---- 最近看到一个 ORM 框架 Fluent Mybatis...     创建表 create schema fluent_mybatis; create table hello_world (     ...我们再到数据库中查看一下结果 现在,我们已经通过一个简单例子演示了 Fluent Mybatis 的强大功能, 在进一步介绍 Fluent Mybatis 更强大功能前,我们揭示一下为啥我们只写了一个数据表对应的...Entity 类, 却拥有了一系列增删改查的数据库操作方法。...dao/*BaseDao : Dao 实现基类, 所有的 DaoImpl 都继承各自基类 根据分层编码的原则,我们不会在 Service 类中直接使用 Mapper 类,而是引用 Dao 类。

    57610

    离心泵CAE_2_ICEM剖分网格_2_叶轮流道

    2.3 定义边界面 在模型树的Parts上右键Create Part来创建Part。...左下方Create Part创建部件中,Part中输入名字“imp_inlet”表示叶轮进口面,然后在Create Part by Section的Entities中点右侧箭头,接下来选中图形中的叶轮进口面...IMP_INLET叶轮进口 IMP_OUTLET叶轮出口 IMP_HUB叶轮后盖板(这里的尖尖是不对的,真正的叶轮是不会整成这个样子的,一是不好加工,二是真做成这样子,一下子就搞断了,所以基本上是要搞掉...模型树中Model->Geometry->Points勾选,让它显示点; 在左下方的Create Body创建体设置框中,输入Part的名字为“body_imp”,表示叶轮流道。...即让整体网格尺度为4mm,OK确认。

    1.1K10

    【Blog.Idp开源】支持在线密码找回

    (一个做认证平台,必须会遇到的一个问题) BCVP框架,是基于: ASP.NETCore5.0+VUE.js+IdentityServer4等核心技术,实现的前后端分离与动态认证鉴权一体化平台。...在BCVP框架中,用到了IdentityServer4(下文统称Ids4)作为认证平台中心,丰富的API为我们管理认证、客户端、用户、资源、令牌等复杂逻辑提供了可能。...02 新注册增加密问题 手动输入,保证内容灵活可变 Create a new account. 还在之前的登录信息中,增加了两个密码问题,目前都是必填项。...在源代码中,因为用的ORM是EFCore,相关的迁移已经做好了,更新最新代码,然后执行update-database即可,当然,直接更新你的数据库也可: (注意要指定上下文) (在用户表中添加)...2FzuZfypjHqlMD%2F%2BgAHwWQqwx9Eq77%2BFpEauVUE7D1Fw%3D%3D&accessCode=60F15185E53181B775809F9B24B8C5AE 这样url就保证不会被篡改

    58320

    Django 模型成员2.2

    BookInfo(models.Model): ......books = BookInfoManager() 创建对象 当创建对象时,django不会数据库进行读写操作 调用save()方法才与数据库交互,将对象保存到数据库中 使用关键字参数构造模型对象很麻烦...,推荐使用下面的两种之式 说明: _init _方法已经在基类models.Model中使用,在自定义模型中无法使用, 方式一:在模型类中增加一个类方法 class BookInfo(models.Model...BookInfoManager(models.Manager): def create_book(self, title, pub_date): book = self.model...在进行单个查询时,模型的对象不存在时会引发此异常,结合try/except使用 实例的方法 str (self):重写object方法,此方法在将对象转换成字符串时会被调用 save():将模型对象保存到数据表中

    51740
    领券