我有以下 SETUP :用于UI的AngularJS,用于数据库的MongoDB和用于服务器的Node.js。
我的网页的功能性:这是表格式网站和 3个标签,用于输入所有保存到数据库的详细信息和一个名为EDIT / DOWNLOAD的标签显示每行(文档)的4-5列(字段)等特定详细信息,并且对于显示的每个文档,还有编辑或下载详细信息的选项。
工作流程点击标签编辑/下载调用一个函数[说 viewDatabaseDetails()],然后获取这些详细信息显示为数据库中每个文档的表。
问题:当我点击功能 viewDatabaseDetails()时,有时Angular会显示数据,有时会失败。接收要显示的数据的成功在1-4次单击选项卡按钮之间变化,以调用 viewDatabaseDetails()。此外,当我点击下载按钮时,有时会在第一次点击时收到下载文件,有时候在点击下载按钮后,客户端会收到2-4次文件。我已经在控制台上检查了节点部分,angular每次都正确地发送所有细节我点击下载按钮或viewDatabaseDetails(),节点正在进行所有处理,如数据操作,创建要发送的文件,创建适当的响应以发送所有文档的详细信息,但不知何故它没有被角度接收。
可能发生的事情是数据在网络中丢失或在接收数据/文件之前发生超时,因为只有服务器到客户端通信有问题。我检查了IE中的网络控制台[我只限IE使用]成功时间大于失败时间。
编辑: 根据以下代码解释错误:当我在UI中单击视图按钮时,有时数据显示正确,有时我会收到错误,如SyntaxError:无效字符。
UI:
<button ng-click="viewDatabase()"> View </button>
控制器:
$scope.viewDatabase = function(){
$http.get('/getDatabase').success(function(response){
$scope.outputs = response;
}).error(function(){
console.log("error");
});
};
用户界面:用于显示回复
<div>
<table>
<tr>
<td>Name </td>
<td>City </td>
<td>Country </td>
</tr>
<tr ng-repeat="output in outputs">
<td>{{output.Name}} </td>
<td>{{output.City}} </td>
<td>{{output.Country}} </td>
</tr>
</table>
</div>
Node和MongoDB代码:
//other require statements
var mongoose = require('mongoose');
var db = mongoose.connect(ConnectionString:port);
var PropertyFileSchema = new Schema({
Name: String,
City: String,
Country: String
});
PropertyFile = db.model('PropertyFile', PropertyFileSchema');
http.createServer(function(req,res){
//putting only required part of code
if(req.url=="/getDatabase"){
res.writeHead(200,{'content-type': 'application/json'});
PropertyFile({},'Name City Country', function(err, docs){
console.log(docs); //always displays if anything in database
res.end(JSON.stringify(docs));
});
}
});