我使用Express,Mongoose和Angular 2(TypeScript)制作网络应用程序。现在我想发布一个MyClass
实例,但没有任何_id
字段。没有'_id'字段的Post TypeScript对象?
在猫鼬,我们可以使用_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
在最后。
以我的角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课程,还是应该完全不同?