【问题标题】:Can't save a string to an array of string on stackmob无法将字符串保存到stackmob上的字符串数组
【发布时间】:2017-11-01 19:26:33
【问题描述】:

这个软件有问题http://dev.wikidiscussion.ozfraier.stackmobapp.com

这是 todos 咖啡脚本示例 http://jasongiedymin.github.com/backbone-todojs-coffeescript/docs/coffeescript/todos.html 的变体

一个列表元素称为 Proposition,它有两个字符串数组,负数和正数。

在每个元素上找到的正负输入框中输入的字符串应保存到这些数组中,并显示在元素下。 当我使用 Backbone/localstorage(对不起,如果我混淆了这些术语)作为我的数据存储时,这一切都奏效了。 但是当我将它移到 Stackmob 时,它停止工作,在 POST 上生成此错误

{"error":"字段负数是不兼容的类型,请检查您的架构;它是作为ClientDataString()传入的"}

PUT 上的这个错误

{"error":"positive 的类型无效,请检查您的架构"}

我检查了我的架构是否有负数和正数,它显示数组 [字符串]

这是我保存字符串的代码:

    savepos: (el) ->
       @save (positive: @get('positive') + el)

发现于 类 Proposition 扩展 StackMob.Model

这是 savepos 函数中调用的函数

        pushPosOnEnter: (e) ->
        if e.keyCode != 13 
           return
        Propositions.create( @newAttributesP() ) 
        @model.savepos ("<a href =\"#" + @inputp.val() + "\"><ul>" + @inputp.val() +   "</a></ul>") 
        @inputp.val('')

发现于 类 PropositionView 扩展 Backbone.View

我写的整个代码我将作为评论添加,因为我没有足够的声誉来发布 4 个链接。

【问题讨论】:

标签: javascript backbone.js coffeescript stackmob


【解决方案1】:

一个列表元素称为 Proposition,它有两个字符串数组,负数和正数。

所以positive 是一个数组。然后你这样做是为了添加另一个元素:

@save (positive: @get('positive') + el)

el 是一个字符串,@get('positive') 是一个数组,array + string 是另一个字符串,用于解释错误消息。

我想你想这样做:

a = _(@get('positive')).clone()
a.push(el)
@save(positive: a)

或者,如果您不介意在模型不知道的情况下更改模型的 positive 属性:

a = @get('positive')
a.push(el)
@save(positive: a)

请注意,get 返回对 modelattributes 中某些内容的引用,因此您可能希望在通过调用 push 更改它之前克隆返回的数组。如果您使用第二种方法,那么 @attributes['positive'] 将被 push 更改,但底层的 Backbone 内容不会知道它,这对您来说可能是也可能不是问题。即使save 调用应该触发所有预期事件,我也会谨慎行事并克隆它。

【讨论】:

  • 谢谢mu的回答,对我帮助很大。
猜你喜欢
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
  • 2021-06-19
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
相关资源
最近更新 更多