【问题标题】:Issue with update query in titanium alloy钛合金更新查询问题
【发布时间】:2014-10-13 05:11:33
【问题描述】:

我是钛和合金框架的新手。我创建了模型来存储一些数据。我能够插入和检索数据。我不知道如何更新行。

按照建议我做了如下,

var userLang = Alloy.Collections.userLanguage;   
var models = Alloy.createModel("userLanguage");
    models.fetch({id: 1});
    models.save({
       languageID: langID,
       languageText: lang
    });

上面的代码没有显示任何错误,但是当我尝试从表中选择一行时,

var userLang = Alloy.createModel('userLanguage');
 userLang.fetch({
        query: {
            statement: "SELECT * FROM userLanguage WHERE id = ?;",
            params: [ 1 ]
        }
    });
 alert("Updated value : "+userLang.get("languageText"));

型号

exports.definition = {
    config : {
        "columns": {
            "id": "integer",
            "languageID": "integer",
            "languageText": "text"
        },
        "adapter": {
            "type": "sql",
            "collection_name": "userLanguage"
        }
    }
};

所选行未按预期更新

【问题讨论】:

    标签: titanium titanium-mobile titanium-alloy


    【解决方案1】:

    ...我需要钛查询...

    我猜你说的是Backbone。如果是这样,那么您可以在下面看到如何更新模型的示例。

    您可以在这里找到更多信息:http://docs.appcelerator.com/titanium/latest/#!/guide/Alloy_Sync_Adapters_and_Migrations

    var model = Alloy.createModel("userLanguage");
    
    model.fetch({id: 1});
    
    model.save({
       languageID: langID,
       languageText: lang
    });
    

    【讨论】:

    • 以上代码不工作。你能建议解决方法吗?我们已经在上面的答案中设置了正确的值
    • 用原始代码更新了我的问题。代码有什么问题。请提出一些解决方案
    • "idAttribute": "id" 添加到模型中的“适配器”中。
    • 我尝试了您的建议,但无法更新该行。你能给我举个例子吗?请
    • 你在adapter中有idAttribute吗?
    【解决方案2】:

    要更新模型,您应该首先从集合中获取它

    var userLang = Alloy.Collections.userLanguage; 
    userLang.fetch();
    var langModel=userLang.get({
                id:1
         });
    

    然后使用set来修改模型的属性

    langModel.set({
          languageText:'new value'
    });
    

    然后保存

    langModel.save();
    

    如果你把它作为主键,你不应该更新它...... 您应该在获取任何模型之前和更新它们之后获取数据。

    【讨论】:

    • 我收到以下错误,Uncaught TypeError Cannot call method 'set' of undefined
    • 通过添加模型编辑了我的问题
    • 这是完全错误的。您无需获取整个集合即可仅更新一个模型。此外,如果你想获得一个模型,你可以只使用get(id)。也不需要先执行set,然后再执行save
    • 我不清楚你能更新你的答案吗
    • 我尝试了您的建议,但无法更新该行。你能给我举个例子吗?请
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多