1

Nodejs、sequelize、および connect-busboy でファイルのアップロードを処理し、テキスト フィールド/データベースへの挿入を検証する標準的な方法は何ですか?

たとえば、エンドユーザーが名前、電子メールを入力し、いくつかのファイルをアップロードする必要があるユーザー プロファイル フォームがあるとします。

ユーザーがフォームを送信すると、サーバー上の手順は次のようになります。(1) テキスト フィールドを検証する (2) データベースのユーザー テーブルに保存する (3) ファイルをディスクに保存する (4) ユーザー行をファイルパスで更新する

半疑似コードでは、次のようなものを想像しています。

router.post('/formSubmit', function(req, res) {
    var name = ....;
    var email = ...;
    var files = [];

    // Sequelize will validate for us when creating a new row in User table
    User.create({ name: name, email: email}).success(function(user_row) {

        // save each files to disk
        ...

        // update user_row with the filepaths on disk.
        ...
    });
});

connect-busboyしかし、このロジック フローを次のように適応させる方法がわかりません。

router.post('/formSubmit', busboy, function(req, res) {
    if (req.busboy) {
        busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
          var saveTo = path.join(os.tmpDir(), path.basename(fieldname));
          file.pipe(fs.createWriteStream(saveTo));
        });
        busboy.on('field', function(key, value, keyTruncated, valueTruncated) {
            // ...
        });
        busboy.on('finish', function() {
          res.writeHead(200, { 'Connection': 'close' });
          res.end("That's all folks!");
        });
        return req.pipe(busboy);
    }
    res.writeHead(404);
    res.end();
});

私は正しい考えを持っていますか?もしそうなら、どうすれば検証、ユーザーの作成/更新をに適応させることができconnect-busboyますか?

私が離れている場合、データベースの検証、ユーザーフィールドの作成/更新、およびユーザーのアップロードを含む標準的な方法は何ですか?

4

0 に答える 0