2016-08-23 3 views
1

現在、私はExpress.jsでAPIを書いていますが、mongodbのスキーマ/モデルの作成方法に関する多くの例を見てきましたが、MSSQLと同様の解決策があるのか​​どうか疑問です。私は、私はリストを取ることができるExpress.jsで同様のやり方で行くだろうかmongooseスタイルのスキーマを使用するNode.jsのMSSQL

public class Expense 
    { 
     public int employeeId { get; set; } 
     public string expenseDate { get; set; } 
     public int taskId { get; set; } 
     public int expenseTypeId { get; set; } 
     public int billingCategory { get; set; } 
     public string notes { get; set; } 
     public float amount { get; set; } 
     public string LastUpdatedDate { get; set; } 
     public int LastUpdatedBy { get; set; } 
     public string dateSubmitted { get; set; } 
     public string location { get; set; } 
    } 

public void SubmitExpenses(List<Expense> expenses) 
     { 
      using (cnxn) 
      { 
       cnxn.Open(); 
       for (int i = 0; i < expenses.Count; i++) 
       { 
        int employeeId = expenses.ElementAt(i).employeeId; 
        string expenseDate = expenses.ElementAt(i).expenseDate; 
        int taskId = expenses.ElementAt(i).taskId; 
        int expenseTypeId = expenses.ElementAt(i).expenseTypeId; 
        int billingCategory = expenses.ElementAt(i).billingCategory; 
        string notes = expenses.ElementAt(i).notes; 
        float amount = expenses.ElementAt(i).amount; 
        string lastUpdatedDate = expenses.ElementAt(i).LastUpdatedDate; 
        int lastUpdatedBy = expenses.ElementAt(i).LastUpdatedBy; 
        string dateSubmitted = expenses.ElementAt(i).dateSubmitted; 


        //public void SubmitExpenses(int employeeId, string expenseDate, int taskId, int expenseTypeId, int billingCategory, 
        // string notes, float amount, string lastUpdatedDate, int lastUpdatedBy, string dateSubmitted) 
        //{ 

        using (SqlCommand sqlQuery = new SqlCommand("INSERT INTO Expenses " + 
         "(Employee_ID, Task_ID, Expense_Date, Expense_Type_ID, Billing_Category_ID, " + 
         "Amount, Notes, Last_Updated_By, Last_Update_Datetime, Date_Submitted, Location) " + 
         "Values (@employeeId, @taskId, @expenseDate, @expenseTypeId, @billingCategory, @amount, @notes, " + 
         "@lastUpdatedBy, @lastUpdatedDate, @dateSubmitted, @locationId)", cnxn)) 
        { 
         sqlQuery.Parameters.Add(new SqlParameter("@employeeId", SqlDbType.Int) { Value = employeeId }); 
         sqlQuery.Parameters.Add(new SqlParameter("@expenseDate", SqlDbType.DateTime) { Value = expenseDate }); 
         sqlQuery.Parameters.Add(new SqlParameter("@taskId", SqlDbType.Int) { Value = taskId }); 
         sqlQuery.Parameters.Add(new SqlParameter("@expenseTypeId", SqlDbType.Int) { Value = expenseTypeId }); 
         sqlQuery.Parameters.Add(new SqlParameter("@billingCategory", SqlDbType.Int) { Value = billingCategory }); 
         sqlQuery.Parameters.Add(new SqlParameter("@notes", SqlDbType.Text) { Value = notes }); 
         sqlQuery.Parameters.Add(new SqlParameter("@amount", SqlDbType.Money) { Value = amount }); 
         sqlQuery.Parameters.Add(new SqlParameter("@lastUpdatedDate", SqlDbType.DateTime) { Value = lastUpdatedDate }); 
         sqlQuery.Parameters.Add(new SqlParameter("@lastUpdatedBy", SqlDbType.Int) { Value = lastUpdatedBy }); 
         sqlQuery.Parameters.Add(new SqlParameter("@dateSubmitted", SqlDbType.DateTime) { Value = dateSubmitted }); 
         sqlQuery.Parameters.Add(new SqlParameter("@locationId", SqlDbType.VarChar) { Value = "" }); 

         sqlQuery.ExecuteNonQuery(); 
        } 
       } 
      } 
     } 

そしてExpense.csモデル:たとえば、私は、次のC#コントローラのメソッドを持っていますJavaScriptオブジェクトのうち、それらを要素に分解し、パラメータ化して送信することができますか?

何かのような...

app.post('/route/to/api', function (req, res) { 
    var sql = require('mssql'); 

    sql.connect("mssql://user:[email protected]/Northwind").then(function() { 
     console.log('connected'); 



     for (var i = 0; i < req.length; i++) { 
      new sql.Request() 
       .input('input_param', sql.VARCHAR, req[i]['PropertyName']) 
       .query('INSERT INTO Table VALUES (@input_param)') 
       .then(function (recordset) { 
        console.log(recordset); 
       }) 
       .catch(function (err) { 
        console.log(err); 
       }); 
     } 
    }).catch(function (err) { 
     console.log(err); 
    }); 
}); 

何かアドバイスをいただければ幸いだろう!

答えて

0

sequelizeをご覧ください。それはあなたに必要な機能を提供するはずです。

+0

モデルを定義し、 'mssql 'でそれを使用することができますか、それとも' sequelize'をすべてのものに対して単独で使用することをお勧めしますか? – WakaChewbacca

+0

Sequelizeは、.NETのEntity FrameworksのようなORMです。 CRUD用のすべてのSQLをバックグラウンドで記述します。あなたが私たちにmssqlして、SQL出力が続かないことを望むなら、あなたはいつも独自のリポジトリモデルを書くことができますが、後で続けるとその努力をしていくのです。 – RedJandal

+0

申し訳ありません、私はそれに渦を立てます。ありがとう! – WakaChewbacca

関連する問題