我试图将monogdb查询的结果返回到web应用程序中。最简单的初始只是返回完整的集合,因为您将在mongodb控制台中通过访问数据库的项目中的webservice调用看到它:
> db.usercollection.find()
{ "_id" : ObjectId("52d2f2b3c60804b25bc5d2ca"), "username" : "testuser1", "email
" : "testuser1@testdomain.com" }
{ "_id" : ObjectId("52d2f2f9c60804b25bc5d2cb"), "username" : "testuser2", "email
" : "testuser2@testdomain.com" }
{ "_id" : ObjectId("52d2f2f9c60804b25bc5d2cc"), "username" : "testuser3", "email
" : "testuser3@testdomain.com" }
>
我想将生成的json放入extjs网格中。我正试图找出它是否有效,但第一个问题实际上是如何返回上面的结果:
<WebMethod()> _
<ScriptMethod(UseHttpGet:=True, ResponseFormat:=ResponseFormat.Json)> _
Public Function getDBData() As String
Dim response As String = String.Empty
mongo.Connect()
Dim db = mongo.GetDatabase("nodetest1")
Using mongo.RequestStart(db)
Dim collection = db.GetCollection(Of BsonDocument)("usercollection").FindAll()
response = collection.Collection.ToString
Return response
End Using
我没有看到我想要的结果:
var newStore = Ext.create('Ext.data.JsonStore', {
model: 'User',
proxy: {
type: 'ajax',
url: 'http://localhost:52856/WCFService/WebService1.asmx/getDBData',
reader: {
type: 'json',
root: 'd',
idProperty: '_id',
successProperty: 'success'
},
success: function (response, options) {
var s = response.responseText;
Ext.MessageBox.alert(s, 'LA LA LA');
newStore.loadData(s);
},
failure: function (response, options) {
Ext.MessageBox.alert('FAILED AGAIN', 'SUCKS');
}
}
});
我尝试按如下方式添加root:
response = "{""d"":" + response + "}"
Return response
第二种方法是直接从node.js调用服务,但不显示如何设置结果:
Ext.Ajax.request({
url: 'http://localhost:3000/userlist',
method: 'GET',
success: function (response, options) {
var s = response.responseText;
Ext.MessageBox.alert(s, 'WOO WOO');
myStore.loadData(s);
},
failure: function (response, options) {
Ext.MessageBox.alert('FAILED MOFO', 'Unable to GET');
}
});
这就是我的回忆:
nodetest1.usercollection
查看:用户列表
extends layout
block content
h1.
User List
u1
each user, i in userlist
li
a(href="mailto:#{user.email}")= user.username
默认路线:
exports.index = function(db) {
return function(req, res) {
var collection = db.get('usercollection');
collection.find({},{}, function(e,docs){
res.render('userlist', {
"userlist" : docs
});
});
};
};
我离开这里还是有人能看出我做错了什么。答案 0 :(得分:2)
致电FindAll
会返回MongoCursor
。
将其转换为JSON格式的快捷方法是:
Return collection.ToArray().ToJSON()
您可以使用以下技术循环遍历每个结果:
For Each document in collection
' do something with each document
Next document
根据结果的大小,您可能会发现返回响应会占用大量服务器内存,并且需要花费大量时间在JavaScript中进行传输和处理。
此外,对于生产代码,我建议只创建一次与MongoDB的连接。连接是线程安全且可重用的(并使用连接池来支持多个客户端)。打开和关闭连接非常昂贵。&#34;