Node.js 如何使用MongoDB显示由“NAME”创建的

Node.js 如何使用MongoDB显示由“NAME”创建的,node.js,database,mongodb,nosql,timestamp,Node.js,Database,Mongodb,Nosql,Timestamp,我是MongoDB新手,所以我想知道是否有任何方法可以显示由XYZ用户创建或修改的名称?我希望它在我的应用程序中显示创建或修改某物的人的姓名。编辑/创建时,您只需将其写在数据库中,没有内置功能。在构建数据模型时,您需要考虑这些信息。例如,假设您正在向posts集合中撰写帖子,并希望从authors集合中添加帖子作者 现在,最简单的方法是将这些数据直接嵌入到post文档中。例如,对于我们使用的创建数据,如下所示: // posts.service.js function save(postData

我是MongoDB新手,所以我想知道是否有任何方法可以显示由XYZ用户创建或修改的名称?我希望它在我的应用程序中显示创建或修改某物的人的姓名。

编辑/创建时,您只需将其写在数据库中,没有内置功能。

在构建数据模型时,您需要考虑这些信息。例如,假设您正在向posts集合中撰写帖子,并希望从authors集合中添加帖子作者

现在,最简单的方法是将这些数据直接嵌入到post文档中。例如,对于我们使用的创建数据,如下所示:

// posts.service.js
function save(postData, userData) {
  // We return a Promise here
  return db.posts.insert({
    title: postData.title,
    text: postData.text,
    published: true,
    // now comes your audit data
    createdBy: user.username,
    createdAt: new Date().toISOString(),
  });
}
module.exports = { save };
您可以这样使用它,即在/posts API控制器中:

// ... other stuff then:
const postsService = require('./posts.service');
route.post('/posts', function(req, res, next) {
  postsService.save({
      title: req.body.title,
      text: req.body.text,
}, req.user)
  // Handle response and error.
  .then(response => res.json(response))
  .catch(error => next(error));
对于更新帖子,您可以使用以下方法将其添加到posts.service.js:

现在,在控制器上,添加路由以处理更新:

// ... after the creation route
route.put('/posts/:postId', function(req, res, next) {
  postsService.update(req.params.postId, {
      title: req.body.title,
      text: req.body.text,
}, req.user)
  // Handle response and error.
  .then(response => res.json(response))
  .catch(error => next(error));
现在,其他方法可以做到这一点,这意味着您只能包括修改数据的人的引用ObjectId。或者更多的信息

但更聪明、更简单的做法是使用mongoose之类的工具来处理数据,然后使用一个插件自动完成所有这一切。类似这样的内容:

您可以在npm上查找类似的内容:

这些操作所做的是向文档添加预保存挂钩,并在这些挂钩中跟踪审计数据。因此,您可以使用已完成的软件包,或者您可以查看这些软件包的功能,并尝试复制功能-如果这是一个爱好项目,并且您想了解如何工作,则效果更好


现在,如何在前端显示此信息对于一个新问题来说可能是很好的,因为您没有指定有关您正在使用的任何软件/软件包的信息。

如果您在其中包含更多信息,这可能是一个更好的问题。尽可能具体。例如,我正在将帖子保存到MongoDB集合帖子,其中包括标题和文本。我在Angular应用程序的/api/posts端点上检索这些。如何将审核数据添加到我的集合中—谁创建或修改了它,以及何时创建或修改。我还想在前端显示此信息。。另外,如果你把问题分为以下几部分1。如何从数据库中保存和检索此信息,以及2。如何显示这些信息你的问题将更有可能得到好的答案。
// ... after the creation route
route.put('/posts/:postId', function(req, res, next) {
  postsService.update(req.params.postId, {
      title: req.body.title,
      text: req.body.text,
}, req.user)
  // Handle response and error.
  .then(response => res.json(response))
  .catch(error => next(error));