首页
学习
活动
专区
工具
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 类。

    58110

    离心泵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

    如何使用Fluent Nhibernate中的Automapping进行OR Mapping映射

    使用Fluent NHibernate的最大好处是降低了出错的机会,因为Fluent Nhibernate的配置是使用C#来编写,可以智能感知,而且还能编译,不像原始的XML配置,写错了都不知道。...比如我们可以定义如下的规则: 类名和字段名采用每个单词首字母大写的方式而数据库表名和列名使用全部大写,单词之间下划线分割的方式。...colName = propertyName.ToDatabaseName() + "_ID"; instance.Column(colName); } } 对于4SubClass...ShouldMap(Type type) { return (type.IsClass && type.Namespace.StartsWith("OurProject.Core.Model...指定了每个类中的Id属性就是该类的主键 } public override bool IsDiscriminated(Type type)//指定了哪些类是需要进行SubClass继承,将其

    1.1K10
    领券