Javascript 图像对象只能记录到控制台
我试图将image对象存储在构造函数变量中,但它没有定义,目前我只能将对象记录到结果中 我试图从类方法Javascript 图像对象只能记录到控制台,javascript,ecmascript-6,cloudinary,Javascript,Ecmascript 6,Cloudinary,我试图将image对象存储在构造函数变量中,但它没有定义,目前我只能将对象记录到结果中 我试图从类方法getUserImage()获取对象数据 但是当我尝试将对象存储在this.\u userImage中时,它显示未定义。同样,只有console.log(result)才起作用:( UsersController.js 'use strict' const Validator = require("../Helpers/ValidatorHelper.js"); const ImageUplo
getUserImage()获取对象数据代码>
但是当我尝试将对象存储在this.\u userImage
中时,它显示未定义。同样,只有console.log(result)
才起作用:(
UsersController.js
'use strict'
const Validator = require("../Helpers/ValidatorHelper.js");
const ImageUploader = require("../Helpers/ImageUploader.js");
class UsersController {
* registerView (request, response) {
yield response.sendView('users.register');
}
* register (request, response) {
const user = request.only('display_name', 'username', 'email', 'password', 'confirm_password', 'console');
const avatar = request.file('avatar');
let validator = new Validator(user, avatar);
let imageUpload = new ImageUploader(avatar);
let avatarStatus = yield validator.validateAvatar();
if (avatarStatus) { // is true
yield imageUpload.uploadAvatar(avatar.file.path);
console.log(imageUpload.getUserImage());
} else { // is false
// pick a random avatar
}
return response.status(200).json(user);
}
}
module.exports = UsersController
您的回调正在更改此
所指的范围:
* uploadAvatar(path) {
cloudinary.uploader.upload(path, function(result) {
// "this" is now referring to your callback function
this._userImage.imgData = result;
return console.log(this._userImage);
});
}
最好使用箭头函数(保留父作用域)修复此问题:
或者在进入回调之前捕获此:
* uploadAvatar(path) {
const _this = this;
cloudinary.uploader.upload(path, function(result) {
_this._userImage.imgData = result;
return console.log(_this._userImage);
});
}
您的回调正在更改此所指的范围:
* uploadAvatar(path) {
cloudinary.uploader.upload(path, function(result) {
// "this" is now referring to your callback function
this._userImage.imgData = result;
return console.log(this._userImage);
});
}
最好使用箭头函数(保留父作用域)修复此问题:
或者在进入回调之前捕获此:
* uploadAvatar(path) {
const _this = this;
cloudinary.uploader.upload(path, function(result) {
_this._userImage.imgData = result;
return console.log(_this._userImage);
});
}
你在
*uploadAvatar
中的回调中的这个
不是你认为的这个
把函数(结果)改成(结果)=>
你在*uploadAvatar
中的回调中的这个
不是你认为的这个
把函数(结果)
改成(结果)=>
哦,好的,谢谢你的格式,Rob!我会给你一个机会。我从来不知道这一点,谢谢你!!没问题,很乐意帮忙:-)嘿,Rob,我的getUserImage()仍然返回一个空对象…这是范围的原因吗?这更可能是因为getUserImage()
是异步的。你的console.log(this.\u userImage)
在您的控制台.log(imageUpload.getUserImage())
之前或之后被调用?我在uploadAvatar()中添加了一个回调。
。现在效果很好!哦,好吧,也谢谢你的格式Rob!我会给这些一个机会。我从来都不知道,谢谢你!!没问题,很高兴能帮上忙:-)嘿Rob,我的getUserImage()仍然返回空对象…这是作用域的原因吗?这更可能是因为getUserImage()
是异步的。您的console.log(this.\u userImage)
是在console.log(imageUpload.getUserImage())
之前还是之后被调用的?我在uploadAvatar()中添加了一个回调
。现在很有魅力!
* uploadAvatar(path) {
const _this = this;
cloudinary.uploader.upload(path, function(result) {
_this._userImage.imgData = result;
return console.log(_this._userImage);
});
}