如何通过updateOrCreate更新loopback中的属性?

时间:2018-02-14 14:58:44

标签: javascript node.js loopbackjs loopback

我想通过远程方法更新属性,但它无法正常工作, 我想将年龄从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'
    }
  });

};

2 个答案:

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

};

此外,您正在返回模型实例,但返回参数是字符串。你可能想改变它。

看看它是否有效。休息似乎对我好吗