2016-10-09 8 views
0

MSSQLデータベースからデータを取得するために、アプリケーションのバックエンドにNode expressを使用しています。私はEmberで作られた別のアプリケーションでこのサーバーにアプローチしたいと思います。 Ember DSはMSSQLによって返されたフォーマットをどのように扱うべきか分かりません。 MSSQLによって返さNode Express mssqlはシリアライザとオブジェクトの名前なしでjson形式を返します

フォーマットの形式は次のとおりです。

[{ 
    "var1": "abc", 
    "var2": "def", 
    "var3": 3 
{ 
    ... 
}] 

そして、正しく理解している場合、の形で次のようになります。したがって

{ 
    'modelName': [{  
     "_id": 1 
     "var1": "abc", 
     "var2": "def", 
     "var3": 3 
    }, 
    { 
     ... 
    }] 
} 

、それはレコードの名前の両方をミス(modelName)とID /シリアル番号が含まれています。 Emberアプリケーションのシリアライザではなく、Expressサーバー内でこれを修正したいと考えています。 Emberが理解できるようにExpress内のMSSQLのJSON出力を変更する方法が見つかりません。

APIエンドポイントは、次のようになります。

var express = require('express'); 
var app = express(); 

app.use(function(req, res, next) { 
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:4200'); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); 
    next(); 
}); 

app.get('/api/data', function (req, res) { 

    var sql = require("mssql"); 

    // config for your database 
    var config = { 
    user: 'user', 
    password: 'pass', 
    server: 'mssql-server', 
    database: 'db' 
    }; 

    // connect to your database 
    sql.connect(config, function (err) { 

    if (err) console.log(err); 

    // create Request object 
    var request = new sql.Request(); 

    // query to the database and get the records 
    request.query('SELECT * [dbo].[table]', 
     function (err, recordset) { 
     if (err) console.log(err) 

     // send records as a response 
     res.send(recordset); 

    }); 
    }); 
}); 

var server = app.listen(8080, function() { 
    console.log('Server is running on localhost:8080...'); 
}); 

ヘルプは非常にいただければ幸いです!

私が使用している(とに固執する必要があること)MSSQL 14

+0

ところで、私は同じ問題を扱うこの記事を見つけました。私の修正方法を見つけることができません。 http://discuss.emberjs.com/t/trouble-getting-a-simple-ember-data-example-working/8867/5 – Dendrobates

+0

これをエクスプレスサーバ上のapiとして公開したいのですか?これを行うエンドポイントを投稿する必要があります。 –

+0

APIエンドポイントのコードを追加しました@RobertMoskal – Dendrobates

答えて

0

あなただけの希望形式にレコードを変換する必要があります。結果セットを繰り返し処理し、それぞれに_idを追加することができます

recordset = recordset.map(each=>{ 
    each._id = someFunction(); 
    return each; 
}); 
res.send({modelName: recordset}) 

次に、それらを結果のmodelNameキーに追加します。 UUIDモジュールを使用して一意のIDを割り当てることを検討することもできます。 npm install uuidだけです。次に:

var uuid = require('uuid'); 
each._id = uuid.v4();  
+0

実際にオブジェクトの名前が追加されましたが、(ランダム)_idも追加する簡単な方法はありますか? – Dendrobates

+0

これはタッチが硬いです。私は何かを試してみましょう。 –

関連する問題