2

私はmysqlでデータベースを作成しました

mysql> SELECT * FROM test456;
+-----+-------+-------------------------+
| _id | name  | image                   |
+-----+-------+-------------------------+
|   1 | Chris | /home/images/index.jpeg |
+-----+-------+-------------------------+
1 row in set (0.00 sec)

My Express プログラムは以下のとおりです

var express = require('express')
  , http = require('http')
  , mysql = require('mysql'); // <---- HERE

var app = express();

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: "root",
    database: 'test123'
});

connection.connect(); // <---- AND HERE

// all environments
app.set('port', process.env.PORT || 7005);


app.get('/',function(request,response){
connection.query('SELECT * FROM test456', function(err, rows, fields)

   {
            console.log('Connection result error '+err);
            console.log('no of records is '+rows.length);
                    response.writeHead(200, { 'Content-Type': 'application/json'});
            response.end(JSON.stringify(rows));
    });

} );



http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

出力::

[{"_id":1,"name":"Chris","image":[47,104,111,109,101,47,105,109,97,103,101,115,47,105,110,100,101,120,46,106,112,101,103]}]

明らかに、画像の URL を生成できないことがわかります。代わりに 16 進数を生成しています ...... 16 進数を URL にする方法

私の調査によると、base64エンコーディングを使用する必要がありますが、ここでそれをどのように適用できますか

何か案は

4

1 に答える 1

1

出力はおそらく、それぞれimageBufferではなく であるためStringです。

console.log(Buffer.isBuffer(rows[0].image)); // true

Node.js との互換性のために、MySQLの文字セットを UTF-8に変更する必要がある場合があります。

ALTER TABLE test456 CONVERT TO CHARACTER SET utf8;

ただし、replacerwith を指定することもできますJSON.stringify():

response.end(JSON.stringify(rows, function (key, value) {
    if (Buffer.isBuffer(value)) {
        return value.toString();
    } else {
        return value;
    }
}));
于 2013-09-17T06:55:56.900 に答える