Я пытаюсь извлечь двоичные данные из couchdb и отправить их клиенту через socket.io.
Я использую нано (https://www.npmjs.com/package/nano). Я могу получить вложения и отправить его через socket.io клиенту. После преобразования двоичных данных в URL в URL всегда отображается пустое изображение.
const nano = require("nano")('http://username:password@my.couchDB.com');
const users = nano.db.use("users");
const io = require("socket.io")(8888);
io.on('connection', socket =>{
socket.on('getProfile', async data => {
try{
let f = await users.get(data.name);
let ob = Object.assign({}, f);
delete ob._id;
delete ob._rev;
let attachment = await users.attachment.get(ob.image,ob.image);
ob.imageData = attachment;
socket.emit('profile', ob);
}
catch(err){
socket.emit('err', err);
}
});
});
import React, { Component } from 'react';
import socketIOClient from "socket.io-client";
import Spinner from '../Spinner';
export default class test extends Component {
constructor(props){
super(props);
this.state = {
loading: true
};
}
componentDidMount(){
const socket = socketIOClient("http://10.20.30.40:8888");
socket.emit('getProfile', {name: 'abc', email: 'abc@xyz.com'});
socket.on('profile', (data) => {
let d= [];
d.push(data.imageData);
let ImgName = data.image;
let type = ImgName.split('.')[1];
let imageURL = window.URL.createObjectURL(new Blob(d, {type: 'image/' + type}));
this.setState({
url: imageURL,
loading: false
});
});
}
render() {
if(this.state.loading){
return (
<Spinner/>
);
}
else {
return (
<img src={this.state.url} alt="blah"/>
);
}
}
}
Изображение не отображается. Все, что я получаю, это сломанное изображение вместе с альтернативным текстом. Помоги мне, ребята!