我想通过远程方法更新属性,但它无法正常工作, 我想将年龄从app发布到后端并在后端更新它。
Person.testupdate = function ( id, age, cb) {
Person.upsertWithWhere({
where: {
id: id
},
age: age,
},
function (err, Person) {
cb(null, Person);
});
}
Person.remoteMethod('testupdate', {
accepts: [{
arg: 'id',
type: 'string'
}
],
returns: {
arg: 'result',
type: 'string'
},
http: {
path: '/updateage',
verb: 'get'
}
});
};
答案 0 :(得分:1)
您可以尝试使用此代码,首先需要通过 id 参数查找记录,更新年龄字段然后保存。
查看remoteMethod定义中的accepts属性,您还需要添加 age 参数。
Person.testupdate = function (id, age, cb){
Person.findById(id, function (err, person){
person.age = age;
return person.save(function (err, personSaved){
cb(null, personSaved);
})
})
}
Person.remoteMethod('testupdate', {
accepts: [{
arg: 'id',
type: 'string',
required: true
},
{
arg: 'age',
type: 'number',
required: true
}
],
returns: {
arg: 'result',
type: 'object'
},
http: {
path: '/updateage',
verb: 'POST'
}
})
答案 1 :(得分:1)
在https://apidocs.strongloop.com/loopback/#persistedmodel-upsertwithwhere
结帐环回API文档PersistedModel.upsertWithWhere([where],data,callback)
根据搜索条件更新或插入模型实例。如果有的话 检索单个实例,更新检索到的模型。创建一个新的 如果没有找到模型实例,则建模。如果是多个则返回错误 找到实例。
这里data
应该是一个对象。
Person.testupdate = function ( id, age, cb) {
Person.upsertWithWhere({
where: {
id: id // or just where : { id } in shorthand
},
// age: age,
{age: age}, // or just {age} in shorthand
},
function (err, Person) {
cb(null, Person);
});
}
Person.remoteMethod('testupdate', {
accepts: [{
arg: 'id',
type: 'string'
}
],
returns: {
arg: 'result',
type: 'string'
},
http: {
path: '/updateage',
verb: 'get'
}
});
};
此外,您正在返回模型实例,但返回参数是字符串。你可能想改变它。
看看它是否有效。休息似乎对我好吗