【发布时间】:2018-04-27 22:42:34
【问题描述】:
这里可能很简单。 我有 2 个 mongoDb 集合,一个(用户)具有 objectId,另一个(列表)具有 userId。
我想通过搜索 objectId (currentUser._id) 来获取列表集合中的文档。
我该怎么做?
我想在其上显示列表的页面组件:
export class ManageComponent implements OnInit {
listing : Listing;
listings: Listing[] = [];
currentUser: User;
constructor(
private listingService: ListingService,
private userService: UserService) {
this.currentUser = JSON.parse(localStorage.getItem('currentUser'));
}
ngOnInit() {
this.loadAllListings();
}
private loadAllListings() {
this.listingService.getAll().subscribe(listings => { this.listings = listings; });
}
private loadById(userId: string) {
this.listingService.getById(userId).subscribe(listings => { this.listings = listings});
}
}
我有一个用于 CRUD 操作的列表服务(有些省略)
import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
import { Listing } from '../_models/index';
@Injectable()
export class ListingService {
constructor(private http: Http) { }
getAll() {
return this.http.get('/listings').map((response: Response) => response.json());
}
getById(_id: string) {
return this.http.get('/listings/' + _id).map((response: Response) => response.json());
}
getByUserId(userId: string) {
return this.http.get('/listings/' + userId).map((response: Response) => response.json());
}
create(listing: Listing) {
return this.http.post('/listings/add', listing);
}
使用服务器端服务的服务器端列表控制器(见下文):
function getRelevant(req, res) {
listingService.getByUserId(req.listing.sub)
.then(function (listing) {
if (listing) {
res.send(listing);
} else {
res.sendStatus(404);
}
})
.catch(function (err) {
res.status(400).send(err);
});
}
服务器端列表服务:
function getByUserId(userId) {
var deferred = Q.defer();
db.listings.findById(userId, function (err, listing) {
if (err) deferred.reject(err.name + ': ' + err.message);
if (listing) {
// return listing
deferred.resolve(listing);
} else {
// listing not found
deferred.resolve();
}
});
return deferred.promise;
}
【问题讨论】:
-
你的问题不是很清楚,所以我不会提供这个作为答案,但是你在寻找类似(伪代码)
var your_user = db.users.findOne({_id: some_user_id}); var user_listings = db.listings.find({user_id: your_user._id});的东西吗? -
这是“前端”代码,与数据库无关。有很多关于基本 CRUD 操作的教程。我建议您从MongoDB CRUD Operations 上的核心文档开始,然后查找使用特定驱动程序实现的文档。 Stack Overflow 不是让某人“为您编写代码”的服务。如果您有后端代码并且某个部分有问题,那么请展示您的努力,有人可以为您指明正确的方向。通常要求“端到端”本质上是一个“教程”太宽泛了。
-
@NeilLunn - 我也有后端代码,但基本上是我想做的,因为我已经有了当前登录用户的 _id,我想在列表集合中返回使用这个 _id 的文档作为参考。
-
本质上是“你的问题太宽泛了”。如果您有后端代码,那么这应该是问题中的 only 代码,您可以询问您不理解的“特定”部分。我对此再清楚不过了。不会给出“端到端教程”。
标签: javascript mongodb angular meanjs