小编Dav*_*gle的帖子

在处于错误状态时,您可以使用Ember Data Models做什么?

我很难理解在以下场景中使用的工作流程:

用户创建模型,我们称之为Product.我们为它们提供了一个表单来填写.由于某些原因除了验证之外的保存错误(超时,访问被拒绝等等)在Ember中,这会使模型进入错误状态.从UI的角度来看,我想要做的就是在屏幕上显示一条消息(简单)并允许用户再次尝试(显然不那么容易).

我已经多次写过它不会重复使用事务.我理解这个的逻辑.对于新产品,我简单地创建另一个新产品,合并来自原始产品(属性,关系)的数据,并用新产品替换我的控制器的内容.虽然可能(希望)有更好的方法,但这并不难,看起来效果很好.

但是,当我编辑产品时,我遇到了一个严重的问题,上述解决方案无效.产品模型现在处于错误状态,我找不到任何方法来获取不同状态的此产品的副本.

我无法弄清楚的是,一旦它遇到错误状态,我可以用这个模型做什么.我尝试过以下方法:

回滚:这不起作用.您无法在错误状态下回滚事务.

重新加载:与上述相同.不允许在错误状态下重新加载记录.

获取记录的新副本:所以我尝试使用与现有记录相同ID的App.Product.find(id).它只是给我一个错误状态的现有记录的副本.

我希望我在这里遗漏一些相当基本的东西.是否可以很好地从错误状态(或无效状态)滚动记录?

如果有一种简单的方法来改变这些模型的状态,我们是否还应该为进一步的提交尝试创建一个新的事务?

ember.js ember-data

21
推荐指数
2
解决办法
3714
查看次数

Ember bound block helper

我想知道ember中的registerBoundHelper是否曾意味着能够处理块样式的助手.例如,我创建了以下内容:

Ember.Handlebars.registerBoundHelper('unlessUndefined', (context, options) ->
  unless typeof context == "undefined"
    return options.fn(this)
  else
    return options.inverse(this)
)   
Run Code Online (Sandbox Code Playgroud)

想法是这样使用它:

{{#unlessUndefined choice}}
  {{#if choice}}
    <p>You chose yes</p>
  {{else}}
    <p>You chose no</p>
  {{/if}}
{{else}}
  <p>Make a choice</p>
{{/unlessUndefined}}
Run Code Online (Sandbox Code Playgroud)

option.fn(this)部分内容似乎不呈现任何输出.执行此操作时,我在控制台中收到错误消息:"您无法在呈现过程之外使用appendChild"

如果这是不可能的,也许有人可以建议另一种方法来实现一个条件块,它只显示绑定值是否未定义?

handlebars.js ember.js

7
推荐指数
1
解决办法
1789
查看次数

使用Vapor 3创建和使用游标

这可能是一堆蠕虫,我会尽力描述这个问题.我们有一个长期运行的数据处理工作.我们的行动数据库会在夜间添加,并处理未完成的操作.处理夜间行动大约需要15分钟.在Vapor 2中,我们使用了大量的原始查询来创建PostgreSQL游标并循环遍历它直到它为空.

目前,我们通过命令行参数运行处理.将来我们希望它作为主服务器的一部分运行,以便在执行处理时检查进度.

func run(using context: CommandContext) throws -> Future<Void> {
    let table = "\"RecRegAction\""
    let cursorName = "\"action_cursor\""
    let chunkSize = 10_000


    return context.container.withNewConnection(to: .psql) { connection in
        return PostgreSQLDatabase.transactionExecute({ connection -> Future<Int> in

            return connection.simpleQuery("DECLARE \(cursorName) CURSOR FOR SELECT * FROM \(table)").map { result in
                var totalResults = 0
                var finished : Bool = false

                while !finished {
                    let results = try connection.raw("FETCH \(chunkSize) FROM \(cursorName)").all(decoding: RecRegAction.self).wait()
                    if results.count > 0 {
                        totalResults += results.count
                        print(totalResults)
                        // Obviously …
Run Code Online (Sandbox Code Playgroud)

swift vapor swift-nio

4
推荐指数
1
解决办法
479
查看次数

标签 统计

ember.js ×2

ember-data ×1

handlebars.js ×1

swift ×1

swift-nio ×1

vapor ×1