【发布时间】:2017-01-27 06:31:48
【问题描述】:
我使用 Express、Mongoose 和 Angular 2 (TypeScript) 制作网络应用程序。现在我想发布一个没有任何_id 字段的MyClass 实例。
在 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 类,还是应该完全不同?
【问题讨论】:
标签: mongodb express angular typescript mongoose