如何更新sails mongodb中的特定字段

时间:2014-06-17 08:59:29

标签: node.js mongodb sails.js

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

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

2 个答案:

答案 0 :(得分:3)

您尝试在Waterline中使用Mongo语法,但ORM有自己的语法。见docs for the Update method;它需要两个参数:"其中"标准,以及要在找到的实例中更改的键/值的对象。所以你想要的是:

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');
});

答案 1 :(得分:0)

Sails.js使用Waterline作为他们的ORM(Object-Relational-Mapper)。因此,ORM不是使用原始SQL语句(可能根据您选择的底层数据库而有所不同),而是在数据库之上提供抽象层,您可以使用相同的源代码轻松查询,创建或更新记录。它将由不同的适配器映射到底层数据库语句。

因此,您没有两个编写MongoDB特定查询,您应该使用Waterline语法。请参阅Waterline文档中的Update方法。 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/