如何在nodejs中使用superagent语法更改值属性?

时间:2014-05-29 06:46:11

标签: node.js npm superagent

在nodejs中使用superagent包,我不确定我能在.end()中做些什么。

我试图在'get'函数中获取数据后改变'title'和'description'的值,但它们保持不变。

当我尝试在.end()中返回data.body [0] .title时,那么

var todo = new Todo();
console.log(todo.get());

它说这是未定义的。 如何使用超级语法更改Todo属性的值?

代码如下:

function Todo() {
  this.title = "milk";
  this.description = "ok, Milk is a white liquid produced by the mammary glands of mammals.";
}

util.inherits(Todo, Model);

Todo.prototype.get = function() {
  console.log(this.title);
  request
    .get(this.read().origin + '/todos/11' + '?userId=1&accessToken=' + this.read().accessToken)
    .send({
      username : 'jiayang',
      password : 'password',
      clientId : this.read().clientId,
      clientSecret : this.read().clientSecret
    })
    .end(function(data) {
      console.log(data.body[0]);
      this.title = data.body[0].title;
      this.description = data.body[0].description;
    });
};

1 个答案:

答案 0 :(得分:1)

this回调中end的上下文是回调函数的本地范围。

尝试;

Todo.prototype.get = function() {
  var self = this;

  console.log(this.title);
  request
    .get(this.read().origin + '/todos/11' + '?userId=1&accessToken=' + this.read().accessToken)
    .send({
      username : 'jiayang',
      password : 'password',
      clientId : this.read().clientId,
      clientSecret : this.read().clientSecret
    })
    .end(function(data) {
      console.log(data.body[0]);
      self.title = data.body[0].title;
      self.description = data.body[0].description;
    });
};