无法将字符串保存到stackmob上的字符串数组

时间:2012-05-05 21:46:14

标签: javascript backbone.js coffeescript stackmob

我遇到此软件的问题http://dev.wikidiscussion.ozfraier.stackmobapp.com

这是todos coffeescript示例http://jasongiedymin.github.com/backbone-todojs-coffeescript/docs/coffeescript/todos.html

的变体

列表元素称为命题,有两个字符串数组,负数和正数。

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

  

{“error”:“字段否定是一种不兼容的类型,请检查您的架构;它是作为ClientDataString()传递的”}

和PUT上的这个错误

  

{“错误”:“正面包含无效类型,请检查您的架构”}

我检查了我的架构是否为正面和正面,它表示数组[string]

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

    savepos: (el) ->
       @save (positive: @get('positive') + el)
发现于     class Proposition扩展了StackMob.Model

这是保存功能中的函数调用

        pushPosOnEnter: (e) ->
        if e.keyCode != 13 
           return
        Propositions.create( @newAttributesP() ) 
        @model.savepos ("<a href =\"#" + @inputp.val() + "\"><ul>" + @inputp.val() +   "</a></ul>") 
        @inputp.val('')
发现于     class PropositionView扩展了Backbone.View

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

1 个答案:

答案 0 :(得分:1)

  

列表元素称为命题,有两个字符串数组,负数和正数。

所以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会返回model attributes中某些内容的引用,因此您可能希望在调用返回的数组之前调用push来修改它。如果您使用第二种方法,则@attributes['positive']将更改push,但基础Backbone内容将无法了解它,这对您来说可能是也可能不是问题。即使save调用应触发所有预期事件,我也会谨慎行事并克隆它。