我对缓冲类型有疑问。我是NodeJ的新手,我需要帮助才能理解Buffer Type的工作原理。让我们举例:
我的架构“用户”中有一个字段“图片”。
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)): 当我在我的回复中包含所有文档时,Buffer字段就是这样的:
{
"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..."
}
详细信息:我正在使用mongoose和express。
答案 0 :(得分:0)
当您使用整个对象时,您看到的是Buffer
对象类型,带有一些二进制数据表示。
但是当您使用u.picture
节点时,尝试通过调用u.picture.toString()
将缓冲区转换为字符串,从而表示您所看到的内容。