如何使用 AngularJS 的 $resource 工厂查询数据库中的一组特定行?
How do I query a database with AngularJS's $resource factory for a specific set of rows?
我正在使用 AngularJS 和 MEAN Stack 构建一个应用程序,想知道是否可以使用 $resource 工厂来查询 MongoDB 数据库中的一组行在其中一列中具有一定的价值。
例如,如果我想构建一个 Todo 应用程序,并且我有一个 table,其中有一列包含用户名和一列带有提醒的字符串,是否可以查询用户名列中具有特定用户名的所有行的数据库?或者,我必须做这样的事情吗:
Todo.service.ts:
export function TodoResource($resource) {
'ngInject';
return $resource('/api/todo/:query', {
id: '@_id'
query: '';
});
}
app.js
var list = [];
this.Todo.query().$promise.then( (data) => {
for(let datum of data){
if(datum.userName == email){
list.push(datum);
}
}
});
在这个示例案例中,我并没有真正查询数据库,只是获取整个 table 并自行过滤结果。只能这样吗,还是可以直接查询数据库?
如果您正在使用 NODE 和 MongoDB,那么您必须使用 Mongoose。
为了这个目的,最好在服务器上而不是在客户端上过滤数据,因为它会
- 减少网络上的数据量
- 防止不需要的数据被发送到客户端
另外,如果你不想用函数手动过滤服务器上的数据,mongoose中有一个函数
var query = collection.find({_id: '001'});
query.exec(function (err, results) {
if (err) {
res.json(err);
}
if (results) {
res.json(results);
}
});
这将在执行之前将查询过滤器添加到 mongodb,并且将仅获取具有
的记录
id= 001;
即过滤数据
这样您就不必手动过滤数据,MongoDB 会处理所有的事情。
你可以在请求中发送id URL
localhost:8080/collectionName/001
在节点服务器上:
function (req, res) {
var mainUrl = req.url.split("/");
if (mainUrl.length > 2) {
query = collection.find({_id: mainUrl[2]});
} else {
query = collection.find();
}
query.exec(function (err, results) {
if (err) {
res.json(err);
}
if (results) {
res.json(results);
}
});
}
你也可以让你的url喜欢:
localhost:8080/collectionName?id='001'
然后在服务器上:
var url_parts = url.parse(req.url, true);
var queryFactors = url_parts.query;
var id= JSON.parse(queryFactors["id"]);
并再次使用上面的代码进行查询。
希望对您有所帮助。
我正在使用 AngularJS 和 MEAN Stack 构建一个应用程序,想知道是否可以使用 $resource 工厂来查询 MongoDB 数据库中的一组行在其中一列中具有一定的价值。
例如,如果我想构建一个 Todo 应用程序,并且我有一个 table,其中有一列包含用户名和一列带有提醒的字符串,是否可以查询用户名列中具有特定用户名的所有行的数据库?或者,我必须做这样的事情吗:
Todo.service.ts:
export function TodoResource($resource) {
'ngInject';
return $resource('/api/todo/:query', {
id: '@_id'
query: '';
});
}
app.js
var list = [];
this.Todo.query().$promise.then( (data) => {
for(let datum of data){
if(datum.userName == email){
list.push(datum);
}
}
});
在这个示例案例中,我并没有真正查询数据库,只是获取整个 table 并自行过滤结果。只能这样吗,还是可以直接查询数据库?
如果您正在使用 NODE 和 MongoDB,那么您必须使用 Mongoose。
为了这个目的,最好在服务器上而不是在客户端上过滤数据,因为它会 - 减少网络上的数据量 - 防止不需要的数据被发送到客户端
另外,如果你不想用函数手动过滤服务器上的数据,mongoose中有一个函数
var query = collection.find({_id: '001'});
query.exec(function (err, results) {
if (err) {
res.json(err);
}
if (results) {
res.json(results);
}
});
这将在执行之前将查询过滤器添加到 mongodb,并且将仅获取具有
的记录id= 001;
即过滤数据
这样您就不必手动过滤数据,MongoDB 会处理所有的事情。
你可以在请求中发送id URL
localhost:8080/collectionName/001
在节点服务器上:
function (req, res) {
var mainUrl = req.url.split("/");
if (mainUrl.length > 2) {
query = collection.find({_id: mainUrl[2]});
} else {
query = collection.find();
}
query.exec(function (err, results) {
if (err) {
res.json(err);
}
if (results) {
res.json(results);
}
});
}
你也可以让你的url喜欢:
localhost:8080/collectionName?id='001'
然后在服务器上:
var url_parts = url.parse(req.url, true);
var queryFactors = url_parts.query;
var id= JSON.parse(queryFactors["id"]);
并再次使用上面的代码进行查询。
希望对您有所帮助。