我看到jslinq,看到tds js庫一起使用節點和SQL ......那麼有沒有人曾經將這些技術一起使用?有沒有一個JS庫,支持與nodejs寫入LINQ到SQL查詢?
我希望能寫的LINQ to SQL查詢的應用程序的NodeJS ...
我看到jslinq,看到tds js庫一起使用節點和SQL ......那麼有沒有人曾經將這些技術一起使用?有沒有一個JS庫,支持與nodejs寫入LINQ到SQL查詢?
我希望能寫的LINQ to SQL查詢的應用程序的NodeJS ...
這是不可能的,至少如果你想在JavaScript中創建即席查詢。 Linq(任何味道)是一種編譯器技術。使用Linq語法或Linq表達式的查詢由C#或VB編譯器處理,不直接由數據庫解釋。
傳統的方式做,這是通過在C#中的Web服務,使用LINQ來獲取和存儲數據,並呈現出簡潔的API提供給客戶。然後客戶端可以通過AJAX調用來使用服務。
您應該檢出edge.js框架,它與.net連接的node.js。一種方法是在邊緣使用內置的T-SQL支持,然後使用像linq.js這樣的方式來處理結果。
var getTop10Products = edge.func('sql', function() {/*
select top 10 * from Products
*/});
getTop10Product(null, function (error, products) {
if (error) throw error;
console.log(products);
});
否則,你可以設置一個EF的datacontext在.NET庫,並調出到使用LINQ
var getTop10Product = edge.func(function() {/*
async (input) => {
using (var db = new ProductContext())
{
//Linq to EF query
var query = from b in db.Products
orderby b.Name
select b;
return query.Take(10).ToList();
}
}
*/});
我今天碰到這個問題就來了,因爲我想知道同樣的事情,並經過多一點搜索我碰到Squel。
從他們的網站直接引用:
//this code
squel.select()
.from("students")
.field("name")
.field("MIN(test_score)")
.field("MAX(test_score)")
.field("GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')")
.group("name")
);
/* will return this SQL query as a string:
SELECT
name,
MIN(test_score),
MAX(test_score),
GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')
FROM
students
GROUP BY
name
*/
希望這將有助於任何人誰碰到這個問題來了,而搜索。
祝你好運!
PS:<插入標準的免責聲明關於瀏覽器不產生SQL查詢... >
如果要創建客戶端JavaScript,將SQL查詢發送到數據庫打開蠕蟲的一個整體, - 如果瀏覽器可以規定SQL查詢,並且用戶可以操縱來自瀏覽器的內容,那麼您很容易受到SQL injection attacks的影響。
底線:不要在瀏覽器中使用此功能!
今天,JayData http://jaydata.org/做到這一點。
您可以使用看起來非常相似,C#(支持它,像最新的火狐瀏覽器,或transpiler,像打字稿或Traceur)新ES6 Arrow功能語法:
todoDB.Todos
.filter(todo => todo.Completed == true)
.map(todo => todo.Task)
.forEach(taskName => $('#list')
.append('Task: ' + taskName + ' completed'));
查詢將根據數據源轉換爲SQL查詢(select Task from Todos where Completed = true
)或者$ filter URL參數(http://.../?$filter=Completed%20eq%201&$select=Task
)...
本週我已經開始使用LINQ to Entities的JS變體。檢查UniMapperJS
例
var comments = await Comment.getAll()
.where(e => e.author.endsWith("something") || e.author.startsWith("somethingElse"))
.orderByDescending("created")
.limit(10)
.skip(0)
.exec();
但是JS的Cuz的限制,這是很難搞清楚,如何接受變量其中因爲箭頭功能被解析爲字符串。我已經通過「虛擬」變量($)和參數列表作爲最後一個參數來解決它。
var comments = await Comment.getAll()
.where(e => e.author.endsWith($) || e.author.startsWith($), filter.endsWith, filter.name)
.orderByDescending("created")
.limit(10)
.skip(0)
.select(e => e.author)
.exec();