이미 this question을 참조했습니다. 즉, 내 문제는 비동기의 오해에 있다고 믿지 않습니다.fs.readFile이 버퍼를 반환하는 이유는 무엇입니까?
다음은 내 모듈의 관련 부분입니다.
var fs = require('fs');
var q = require('q');
var u = require('../utils/json');
var indexFile = './data/index.json';
function getIndex() {
var def = q.defer(),
promise = def.promise,
obj;
fs.readFile(indexFile, function(err,data) {
if (err) {
throw err;
def.reject(err);
}
console.log('data', data);
def.resolve(obj);
});
return promise;
}
'데이터'를 기록 할 때 해당 파일의 JSON 콘텐츠보다는 버퍼 (아래)가 표시됩니다.
<Buffer 5b 7b 22 68 65 6c 6c 6f 22 3a 22 77 6f 72 6c 64 22 7d 5d>
이유에 대한 의견이 있으십니까?
제쳐두고, 지연을 거부하려면 '오류'를 던지지 마십시오. – Andbdrew
@Andbdrew 좋은 지적. 팁 고마워. –
그리고 API가 문자열 대신 버퍼로 기본 설정되는 이유는 버퍼가 바이너리 데이터를 읽는 유일한 안전한 방법이라는 것입니다. 그러나 버퍼를 문자열로 변환하기 위해서는'.toString()'을 문자열 컨텍스트에 강제로 추가하기 만하면됩니다 :' ''+ buffer' – slebetman