2016-10-10 87 views
0

這是我第一次使用SO。我來到這裏是因爲我最近遷移到了新的Microsoft Azure應用服務,看起來Node.js的語法等已經改變或者有點不同。這是我現有的舊移動服務代碼,我希望遷移到新的語法。有什麼變化等方面的參考非常有限,我也無法在谷歌找到很多。Azure移動應用程序CRUD操作語法

function insert(item, user, request) { 
var table = tables.getTable('user'); 
table.where({ 
    userid: item.userid 
}).read({ 
    success: upsertItem 
}); 


function upsertItem(existingItems) { 
    if (existingItems.length > 0) { 
     item.id = existingItems[0].id; 
     table.update(item, { 
     success: function(updatedItem) { 
     request.respond(200, updatedItem) 
     } 
     }); 
    } else { 
     request.execute(); 
    } 
} 

}

這個新腳本的ISA樣品

var table = module.exports = require('azure-mobile-apps').table(); 

table.read(function (context) { 
return context.execute(); 
}); 

香港專業教育學院也看到了這個帖子,但它不是有用

Azure mobile apps CRUD operations on SQL table (node.js backend)

我的目標是執行UPSERT根據我的原始代碼。如果你能通過提供確切的轉換幫助我,那將是我的首選答案。

在此先感謝您的幫助。

回答

0

一般來說,您可以利用use()來定製您自己的中間件來處理其他操作。

由於插入操作實現HTTP POST請求。您可以參考Azure Mobile Apps - An item to insert was not provided瞭解如何在POSTMAN中針對Azure移動應用程序實施POST數據的發佈請求。

然後,您可以在您的Azure移動應用程序中安裝body-parser模塊來解析請求正文。在app.js

添加以下代碼,以使模塊:

var bodyParser = require('body-parser'); 
app.use(bodyParser.json({ limit: '50mb' })); 
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true })); 

最後,請考慮如何使用中間件在簡易的表的腳本下面的代碼片段:

var insertMiddleware = function(req,res,next){ 
    var queries = require('azure-mobile-apps/src/query'); 
    var t = req.azureMobile.tables('TodoItem'); 
    var query = queries.create('TodoItem') 
      .where({ text: req.body.text }); 
    t.read(query).then(function(data){ 
     if(data.length === 0){ 
     next(); 
     }else{ 
     data.text = "something new"; 
     console.log(data); 
     var query = { 
      sql: 'UPDATE TodoItem SET text = @text where id = @id', 
      parameters: [ 
       { name: 'text', value: data.text }, 
       { name: 'id', value: data.id } 
      ] 
     }; 
     req.azureMobile.data.execute(query).then(function(result){ 
      res.status(200).json("success"); 
     }); 
     } 
    }); 
}; 
table.insert.use(insertMiddleware, table.operation); 
table.insert(function (context) { 
    return context.execute(); 
}); 
0

我已經做了完整的一系列新的Node.js SDK這裏:https://shellmonger.com/30-days-of-azure-mobile-apps-the-table-of-contents/

也有官方的文件,這是相當全面:https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-node-backend-how-to-use-server-sdk/

還有一個兼容包是旨在通過將舊服務轉換爲新格式,使其更輕鬆:https://www.npmjs.com/package/azure-mobile-apps-compatibility

在這些之間,您應該可以輕鬆地將您的網站轉換爲新的Azure移動應用程序SDK。

相關問題