首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用baucis在POST请求后获取插入的mongo id

如何使用baucis在POST请求后获取插入的mongo id
EN

Stack Overflow用户
提问于 2014-12-05 18:01:44
回答 2查看 840关注 0票数 2

我正在使用express + baucis + mongoose为我存储在mongodb中的模型创建一个基本的CRUD API。

代码语言:javascript
运行
复制
var app = express();

mongoose.model('workgroup', WorkGroupSchema);

baucis.rest('workgroup');

app.use('/api', baucis());

var server = app.listen(4100);

到目前为止一切正常,我可以提出任何请求来创建、更新和删除我的工作组。

现在,当用户创建工作组时,我需要执行一些更多的操作(更新工作组权限),为此,我需要获取最近创建的工作组的mongo id。

我尝试在baucis之后添加另一个快速中间件,只处理工作组的post:

代码语言:javascript
运行
复制
app.post('/api/workgroups', workgroupPermissionUpdater.update.bind(workgroupPermissionUpdater));

当调用workgroupPermissionUpdater.update时,我希望在res参数中找到创建的工作组的mongo id (每个中间件接收req、res和next作为参数),但它不在那里。

有人知道我如何获得创建的工作组的id吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-02-26 11:47:13

我对此进行了一些研究,并尝试了一些使用目前的baucis中间件的方法,但没有得到令人满意的解决方案(很高兴听到来自社区的不同意见)。

我最终决定将baucis从图片中剔除,转而通过mongoose middleware提供此功能。

代码语言:javascript
运行
复制
//WorkGroup.js file
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// other settings here

var WorkGroupSchema = new Schema({
  name: String
});

module.exports = mongoose.model('WorkGroupSchema', WorkGroupSchema);

WorkGroupSchema.post('save', function (doc){
     console.log("Do something with the WorkGroup " + doc.name + "just created " + doc.id);
});

您将可以访问新创建的模块实例的实例的所有其他属性。你也可以更新事件,比如‘hook’,'update',...

票数 2
EN

Stack Overflow用户

发布于 2015-03-08 00:14:40

正如@Andrea_C提到的那样,使用mongoose中间件看起来是最好的解决方案。

您还可以使用传出流,这在某些情况下会更好:

代码语言:javascript
运行
复制
controller.request('post', function (request, response, next) {
  request.baucis.outgoing(function (context, callback) {
    // do something with context.doc.id
    callback(null, context);
  });
  next();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27313282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档