【问题标题】:How to update a specific field in sails mongodb如何更新sails mongodb中的特定字段
【发布时间】:2014-06-17 08:59:28
【问题描述】:

此代码没有错误,但更新不起作用。更新语法在 mongodb 中有效。我通常想根据某些条件更新特定字段。

User.update(
    { ULId: "IC666" },
    {$set: {FHName: "Arijit Banerjee",Ward:"II"}}
).done(function(err) {
    if(err)
      res.end(err);     
    res.end('success');
});

【问题讨论】:

    标签: node.js mongodb sails.js


    【解决方案1】:

    您正在尝试将 Mongo 语法与 Waterline 一起使用,但 ORM 有自己的语法。见docs for the Update method;它需要两个参数:“where”条件的对象,以及在找到的实例中更改的键/值对象。所以你想要的是:

    User.update(
        // Find all users with ULId = IC666
        { ULId: "IC666" },
        // Update their FHName and Ward fields
        {FHName: "Arijit Banerjee",Ward:"II"}
    ).exec(function(err, users) {
        // In case of error, handle accordingly
        if(err) {return res.serverError(err);} 
        // Otherwise send a success message and a 200 status    
        return res.send('success');
    });
    

    【讨论】:

      【解决方案2】:

      Sails.js 使用 Waterline 作为其 ORM(对象关系映射器)。因此,ORM 不是使用原始 SQL 语句(根据您选择的底层数据库可能会有所不同),而是在数据库之上提供了一个抽象层,您可以使用相同的源代码轻松查询、创建或更新记录。并且会被不同的适配器映射到底层的数据库语句。

      所以你没有两个写 MongoDB 特定的查询,你应该使用 Waterline 语法。请参阅 Waterline 文档中的更新方法。 https://github.com/balderdashy/waterline-docs/blob/master/query-methods.md

      .update( search criteria , values , [callback] )
      

      update 将尝试更新任何符合传入条件的记录。可以使用查询语言构建条件。

      例子:

      User.update({ name: 'Walter Jr' }, { name: 'Flynn' })
      .exec(function(err, users) {});
      

      这里有一篇文章可以让您更好地了解什么是 ORM 以及 Sails.js 模型验证方法的工作原理,这可能对您有用。 http://www.shanison.com/2014/07/11/sails-js-model-validation/

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      相关资源
      最近更新 更多