버퍼 설명서의 http://nodejs.org/api/buffer.html#buffer_buffer에 콜백이 표시되지 않습니다. 버퍼가 동기식이라고 가정하는 것이 안전합니까? 이진 파일을 base64로 인코딩 된 문자열로 변환하려고합니다.은 nodejs 버퍼 비동기식 또는 동기식입니까?
나는 궁극적으로 PNG 파일을 가져 와서 base64로 인코딩 된 문자열을 MongoDB에 저장하려고합니다. 나는 PNG 파일을 가져와 Buffer를 사용하여 base64로 변환 한 다음이 base64 출력을 Mongo로 전달해야한다고 읽었습니다.
내 코드는 다음과 같이 보입니다 :
fs.readFile(filepath, function(err, data) {
var fileBuffer = new Buffer(data).toString('base64');
// do Mongo save here with the fileBuffer ...
});
내가 버퍼 동기 것을 조금 무서운이야을, 따라서이 base64로 인코딩이 일어나는 동안 다른 요청을 차단된다. 그렇다면 Mongo에 저장하기 위해 바이너리 파일을 base64로 변환하는 더 좋은 방법이 있습니까?
음, 이것이 동기인지 아닌지는 모르지만 asynnchronous 콜백의 내부에서 'toString' 메소드를 호출하고 있습니다. 'fs.readFile'의 콜백 안에서 다른 것을 실행할 필요가 있습니까? 그것의 바깥 부분은 그것으로 막혀서는 안됩니다. –