backbone.js - 钛合金型号- table 无立柱

标签 backbone.js titanium titanium-mobile titanium-alloy

我是钛和合金的新手,但在使用大约 3 个月后,我对其中的大部分感到满意​​。然而,我对合金模型还很陌生,我遇到了一个我无法弄清楚的错误。以下是我的模型和 Controller 的设置方式(不包括 View .XML 文件,因为它不相关)

Orders.js |型号

exports.definition = {
config : {
    columns : {
        "id_Orders" : "INTEGER PRIMARY KEY AUTOINCREMENT",
        "reseller_name" : "TEXT",
        "reseller_invoice_account" : "TEXT"
    },
    adapter : {
        type : "sql",
        collection_name : "orders",
        idAttribute: "id_Orders"
    }
}

Orders.js | Controller

var network = require("network");
network.soapRequest("<prem:getResellersRequest/>", function(a) {
    Ti.API.info("The Soap Server Returned: " + JSON.stringify(a));
    Ti.API.info("There are " + a.reseller_name.length + " returned records.");
    for (var i = 0; a.reseller_name.length > i; i++) {
        var listModel = Alloy.createModel("orders", {
            reseller_name: a.reseller_name[i],
            reseller_invoice_account: a.reseller_invoice_account[i]
        });
        listModel.save();
        Alloy.Collections.orders.fetch();
    }
});
Alloy.Collections.orders.fetch();

错误发生在listModel.save()行:

执行sql时出错:表orders没有名为reseller_name:的列,编译时:REPLACE INTO Orders (id_Orders,reseller_name,reseller_invoice_account) VALUES (?,?,?);

Network 是一个库,它向网络服务器发送 SOAP 请求并使用soap2json.js 将其转换为 JSON。我确信网络部分没有问题。 我很确定返回的 JSON 对象“a”有错误。我可以单独输出所有值并在其他地方使用它 - 当我尝试将模型保存到集合中时会发生错误。

我错过了什么吗?

最佳答案

当您在第一次运行应用程序后修改模型的定义时,通常会发生这种情况,可能是您在此之后添加了 reseller_name 列。您必须重新生成表。

当这种情况发生在我身上并且我正处于开发阶段时,我通常会在 Alloy.js 文件的开头删除表格。试试这个:

   var db = Ti.Database.open ('_alloy_');
   db.Execute ('DROP TABLE IF EXISTS orders;');
   db.close ();

显然,这会破坏表中的所有数据,但是当您第一次实例化集合或模型时,Alloy 会使用新定义重新生成表。

如果您需要保留数据,处理这些更改的正确方法是使用 migrations

关于backbone.js - 钛合金型号- table 无立柱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565441/

相关文章:

javascript - 通过带有下划线的多个属性对对象数组进行分组

android - Titanium Appcelerator - Facebook 移动应用安装广告

callback - 钛移动推送通知回调未触发

android - Appcelerator Titanium 许可证

android - Titanium Studio for Android : Where does Ti. API.info() 打印消息?

javascript - 嵌套 View 的推荐方法是什么?

javascript - 将事件传递给主干中的集合

ruby-on-rails - 在服务器(Node.js 和 Rails)和客户端上运行 Backbone 进行复杂验证是否明智?

javascript - 当两个 View 相交时如何添加事件监听器?

ios - 如何在打开新窗口时在钛合金中实现滑动过渡