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