2017-08-24 88 views
0

我有一個關於緩衝區類型的問題。我是NodeJ中的新成員,我需要幫助才能瞭解緩衝區類型如何工作。讓我們來舉例:NodeJS類型緩衝區不一致性

我在架構「用戶」有場「圖片」。

var UserSchema = new mongoose.Schema({ 
    name: String, 
    picture: { type: Buffer, contentType: String} 
}); 

此外,我有一個端點來獲取信息。這很簡單:

User.findById(req.params.id, function (err, u) {    
    res.send(u); 
}); 

在這一點上沒有問題。 但是我在這個迴應中面臨着不一致。

案例01(res.send(U)): 當我有我所有的文件在我的響應緩衝器字段是類似的東西:

{ 
    "name": "aaa", 
    "picture": { 
      "type": "Buffer", 
      "data": [100,97,116,97,58,105,...] 
    } 
} 

案例02(res.send( u.picture)): 當我只有圖片領域,我的回答是這樣的事情:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAADAFBMVEUODAkjCgYbGBQTJwZFEBIuHBZjDw8ZLkUyKCNFJRonOA1cIglNLBYgN1QiQCSDExlWJi+pAw4+NDJrICxkKg8zRBNKOCFbMSo1RDrEAxRvLxFVOiNnMh6ZGCEpRWo8TB5fPRF1MhOELQpMQEBBUA1BQVxfOjJ6KUpZQighV088TEF6NhdYQT1qPCvDFCFFVSO1GyhLTzeKK06COhkrWGdEU0hZSkYhY1pBT3NuShdiSEGaLjh8QCxBWz0XaWYRX61wSDAwbRxNXCzrDCpVVzZBYy6LQR62KDFqR1ufOxBTV0hiT0tySj9LXFFbVFc3XYyZNV1IWYBXZxKFSjZpVk3FLDiWSSR7VjFmWlZUajdhYU... 

我的問題是:爲什麼發生以及如何使有迴應如下?

{ 
    "name": "aaa", 
    "picture: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAADAFBMVEUODAkjCgYbGBQTJwZFEBIuHBZjDw8ZLkUyKCNFJRonOA1cIglNLBYgN1QiQCSDExlWJi+pAw4+NDJrICxkKg8zRBNKOCFbMSo1RDrEAxRvLxFVOiNnMh6ZGCEpRWo8TB5fPRF1MhOELQpMQEBBUA1BQVxfOjJ6KUpZQighV088TEF6NhdYQT1qPCvDFCFFVSO1GyhLTzeKK06COhkrWGdEU0hZSkYhY1pBT3NuShdiSEGaLjh8QCxBWz0XaWYRX61wSDAwbRxNXCzrDCpVVzZBYy6LQR62KDFqR1ufOxBTV0hiT0tySj9LXFFbVFc3XYyZNV1IWYBXZxKFSjZpVk3FLDiWSSR7VjFmWlZUajdhYU..." 
} 

詳細信息:我用快速使用貓鼬。

回答

0

當您使用整個對象你看到的是一個Buffer對象類型,具有一定的二進制數據表示。

但是當你使用u.picture節點試圖通過調用u.picture.toString()導致你所看到的表示以緩衝區轉換爲字符串。

+0

感謝@AlexandruOlaru爲乾淨的答案。但是我怎麼能同時擁有兩個? 我想的名字和picture.toString()在相同的反應 –

+0

@brunnogrillo更新我的回答 –

+0

遺憾的是它不工作。我甚至試過這樣:u.picture =新的緩衝區(u.picture「的base64」)的toString(「二進制」)沒有成功 –

相關問題