我在gobuffalo中使用pop.Connection#ValidateAndCreate遇到麻烦。

    purchaseOrder.Items = models.OrderItems{}

    ... fill purchaseOrder.Items ...

    for _, item := range purchaseOrder.Items {

        verrs, err := tx.ValidateAndCreate(item)
        if err != nil {
            return errors.WithStack(err)
        }

        if verrs != nil {
            // show error
        }
    }
tx是* github.com / gobuffalo / pop.Connection类型

我收到错误:reflect: call of reflect.Value.Elem on struct Value行上的verrs, err := tx.ValidateAndCreate(item)

最佳答案

ValidateAndCreate需要该项目作为指针,因为它需要在自动生成的情况下更新ID属性。 Pop也管理CreatedAtUpdatedAt属性,因此它也必须更改它们。

根据mkopriva的建议,您可以将ValidateAndCreate调用更改为:

verrs, err := tx.ValidateAndCreate(&item)
if err != nil {
    return errors.WithStack(err)
}

10-06 03:03