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 に答える