此代码没有错误,但更新不起作用。更新语法在mongodb中工作。我通常希望根据某些条件更新特定字段。
User.update(
{ ULId: "IC666" },
{$set: {FHName: "Arijit Banerjee",Ward:"II"}}
).done(function(err) {
if(err)
res.end(err);
res.end('success');
});
答案 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/