我使用Express,Mongoose和Angular 2(TypeScript)制作一个网络应用程序。现在,我想发布一个MyClass
实例而不包含任何_id
字段。
在mongoose中我们可以使用_id
对mongoDB进行大量操作,所以这是我在服务器端使用mongoose
router.post('/', function(req, res, next) {
Package.create(req.body, function (err, post) {
if (err) return next(err);
res.json(post);
});
});
/* GET /package/id */
router.get('/:id', function(req, res, next) {
Package.findById(req.params.id, function (err, post) {
if (err) return next(err);
res.json(post);
});
});
/* PUT /package/:id */
router.put('/:id', function(req, res, next) {
Package.findByIdAndUpdate(req.params.id, req.body, function (err, post, after) {
if (err) return next(err);
res.json(post);
});
});
要包含字段_id
,我创建了一个这样的ts类:
export class Package{
constructor(
public guid: string,
...
[other fields]
...
public _id: string
){}
}
请注意最后的_id
。
在我的angular 2服务中,我这样做是为了将json对象发布到服务器
//create new pakcage
private post(pck: Package): Promise<Package> {
let headers = new Headers({
'Content-Type': 'application/json'
});
return this.http
.post(this.packageUrl, JSON.stringify(pck), { headers: headers })
.toPromise()
.then(res => res.json())
.catch(this.handleError);
}
然后我收到了错误,如下面的屏幕截图所示:
其中表示我回发的对象有一个空的_id
字段。
如何在没有_id
字段的情况下发布ts类,或者我应该完全不同地发布它?
答案 0 :(得分:0)
由于没有人给出答案,我去了互联网,找到了一个如何实施Angular2 - Mongoose - Express系统的好例子。
https://github.com/moizKachwala/Angular2-express-mongoose-gulp-node-typescript
官方教程中原版Hero App的一个很好的例子。虽然它基于RC1,但它为如何正确执行RESTFUL请求提供了良好的起点。
希望这可以帮助那些正在寻找类似答案的人。