如何在Sails的MongoDB中更新特定字段

4

这段代码没有错误,但更新操作不起作用。在MongoDB中,更新语法可以正常工作。我通常想要根据某些条件更新特定的字段。

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

3
你正在尝试使用Mongo语法与Waterline配合,但ORM有其自己的语法。请参阅Update方法的文档;它接受两个参数:一个“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');
});

0
Sails.js使用Waterline作为他们的ORM(对象关系映射器)。因此,不需要使用原始的SQL语句(这可能因所选择的底层数据库而异),ORM在数据库之上提供了一个抽象层,您可以轻松地使用相同的源代码查询、创建或更新记录。并且它将通过不同的适配器映射到底层数据库语句。
因此,您不需要编写特定于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/


上述的 query-methods.md 文档现已更新:https://github.com/balderdashy/waterline-docs/blob/master/queries/query-methods.md - RaviRokkam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接