0

我正在用 Node、Express 和 MongoDB 创建一个博客。我正在使用 Mongoose 连接到 MongoDB。

我有一个创建新帖子表单,可以很好地在 MongoDB 中创建和保存新帖子。

创建帖子时,您可以将帖子标记为已发布或不选中该选项。当您保存帖子时,我希望您:

A) 如果帖子已发布,则重定向到主页,或 B) 如果帖子未标记为已发布,则重定向到帖子的编辑/更新页面。

这是我试图用来完成上述操作的视图中的代码:

addPost: function(req, res) {
  return new Post(req.body.post).save(function() {
    if (req.body.published === true) {
      return res.redirect("/");
    } else {
      return res.redirect("/office/post/" + [NEED OBJECT ID HERE] + "/edit");
    }
  });
}

这是发送 POST 数据的相应视图:

form.web-form(method="post", action="/post/new")
  fieldset.fieldset
    label.form-label(for="title") Title
    input.text-input(id="title", type="text", name="post[title]", placeholder="Post title")

    input.text-input(id="alias", type="hidden", name="post[alias]")

    label.form-label(for="subhead") Subhead
    input.text-input(id="subhead", type="text", name="post[subhead]", placeholder="Post subhead")

    label.form-label(for="preview") Preview
    textarea.text-area(id="preview", name="post[preview]", rows="4", placeholder="Preview")

    label.form-label(for="post-body") Body
    textarea.text-area(id="post-body", name="post[body]", rows="5", placeholder="Main content")

    input.check-box(onclick="changeButton()", id="published", type="checkbox", name="post[published]")
    label.inline-label(for="published") Publish

    input.btn-submit(id="submit-post", type="submit", value="Save!")

    a.btn-cancel(href="/") Cancel

任何帮助是极大的赞赏!谢谢!

4

1 回答 1

1

像这样?

addPost: function(req, res) {
  // strip 'post[' and ']' from submitted parameters
  var params = {};
  for (var k in req.body)
  {
    params[k.substring(5, k.length - 1)] = req.body[k];
  };
  var post = new Post(params);
  return post.save(function() {
    if (params.published === true) {
      return res.redirect("/");
    } else {
      return res.redirect("/office/post/" + post._id + "/edit");
    }
  });
}
于 2013-03-08T15:43:03.897 回答