2016-12-03 3 views
0

Я прочитал документацию на Vapor Fluent, но ничего не нашел о выполнении транзакций с базой данных.Выполнение транзакций с базой данных в Vapor Fluent (Mongo)

https://vapor.github.io/documentation/fluent/driver.html

Например, я хочу, чтобы выполнить эту часть кода в одной транзакции:

var order = Order(customerId: customer.id!, 
         createdDate: Int(Date().timeIntervalSince1970), 
         availabilityDate: orderDate) 
    do { 
     try order.save() 
    } catch { 
     throw Abort.serverError 
    } 

    for jsonItem in items { 
     guard let object = jsonItem.object else { 
      continue 
     } 
     let menuItemId = object["item_id"]!.string! 
     let quantity = object["quantity"]!.int! 

     guard let menuItem = try MenuItem.find(menuItemId) else { 
      continue 
     } 

     var orderItem = OrderItem(orderId: order.id!, 
            menuItemId: menuItem.id!, 
            quantity: quantity) 
     do { 
      try orderItem.save() 
     } catch { 
      throw Abort.serverError 
     } 
    } 

Можно ли я использовать поставщик VaporMongo? Благодаря!

ответ

0

Да, это возможно. Свободный абстрагирует от вас все основные операции, поэтому вам не нужно беспокоиться о них. Таким образом, неважно, используете ли вы Mongo, PostgreSQL или пользовательский драйвер, ваш код не потребуется изменять.