【问题标题】:Sails.js Waterline Update MethodSails.js 水线更新方法
【发布时间】:2016-05-20 22:39:14
【问题描述】:

我在 Sails.js 应用程序中使用 Waterline 来查询我的 mongo 数据库。我可以根据多个查询参数获取记录,例如:

Model.findOne({param1: params[0], param2: params[1]})...

效果很好。我查看了the docs for .update() 并复制了它,但它不起作用。我仍然需要根据两个参数更新一条记录,所以这是我的更新函数:

Model.update(
    [{param1: params[0]}, {param2: params[1]}],
    [{field1: update[0]}, {field2: update[1]}]
).exec(function(err, updatedModel) {
    console.log(err);
    console.log(updatedModel);
});

根据我的阅读,update 方法的第一个参数似乎是一个对象或对象数组,其中包含您要查询以更新记录的值;那么第二个参数就是更新后的字段。

但是,我没有收到错误或更新的模型,这可能意味着我没有从 mongo 的模型表中找到符合要求的对象。但我知道对象在那里并且参数是正确的。有什么建议吗?

另外,here's a gist 也有更新功能。

【问题讨论】:

    标签: mongodb sails.js


    【解决方案1】:

    update 函数中的参数是对象而不是数组。

    Model.update(
        {param1: params[0], param2: params[1]}, //this is find
        {field1: update[0], field2: update[1]} // this is update
    ).exec(function(err, updatedModel) {
        if(err)
            console.error(err);
        console.log(updatedModel);
    });
    

    【讨论】:

    • 我会试试这个,但文档说查找标准的接受数据类型是{},[{}], string, int,接受的更新记录类型是{},[{}]
    • 因此,即使文档显示您可以在 find 参数和 update 参数中传递对象数组,但实际上不能。或者至少那没有用。然而,这里的答案确实有效。
    • Sails 文档有很多错误。它现在由社区构建。
    猜你喜欢
    • 2020-10-07
    • 2014-12-14
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 2014-09-27
    • 1970-01-01
    相关资源
    最近更新 更多