Sails.jsブログアプリケーションにコメント機能を追加しようとしています。しかし、コントローラの動作を正しく書いていないようです。Sails.jsでPOSTリクエストを正しく処理できません。
コメントフォームを送信すると、ページがリロードされますが、リロードは完了しません。
は、ここに私のコントローラのコードです:
const gravatar = require('gravatar');
module.exports = {
blog: (req, res) => {
Post.find({}).exec((err, posts) => {
if (err) {
res.send(500, { error: 'Database Error' });
}
res.view('all-posts', { posts });
});
},
singlePost: (req, res) => {
Post.findOneBySlug(req.params.slug).exec((err, post) => {
if (err) {
res.send(500, { error: 'Database Error' });
}
res.view('single-post', {
post,
gravatar: gravatar.url
});
});
},
addComment: (req, res) => {
const {
name, comment, email,
url, slug,
} = req.allParams();
Post.findOneBySlug(slug).exec((err, post) => {
if (err) {
return res.send(500, { error: 'Database Error' });
Comment.create({
body: comment, name, email, website: url
}).exec((error, comment) => {
if (error) {
return res.send(500, { error: 'Database Error' });
}
console.log(comment);
post.comments.addComment({slug, comment});
post.save();
res.redirect(`/${slug}`);
});
}
});
return false;
},
};
そして、ここに私のroutes.js
ファイルです:
module.exports.routes = {
'get /blog': 'BlogController.blog',
'get /:slug': 'BlogController.singlePost',
'post /:slug/new-comment': 'BlogController.addComment'
};
そして、これは私のモデルPost.js
module.exports = {
identity: 'Post',
attributes: {
title: {
type: 'string',
required: true,
unique: true
},
body: {
type: 'string'
},
categories: {
type: 'string',
required: true
},
imageUrl: {
type: 'string'
},
comments: {
collection: 'Comment',
via: 'post'
},
slug: {
type: 'slug',
from: 'title',
blacklist: ['search', 'blog', 'contacts']
}
},
addComment: (options, cb) => {
Post.findOneBySlug(options.slug).exec((err, post) => {
if (err) return cb(err);
if (!post) return cb(new Error('Post not found.'));
post.comments.add(options.comment);
post.save(cb);
})
},
connection: 'mongodb'
};
、あるとき、Iサブ/:slug
ページのコメントフォームに記入すると、実際には何も起こりませんが、ページを再読み込みしようとします。そして、データベースには何も保存されません。
フォームのパラメータがフォームから送信されるため、クライアント側ではすべて問題なく動作します。
どのように私はこの投稿要求に正しくアプローチしていますか?
私の 'addComment'アクション(問題の更新されたコードを参照)を更新しましたが、問題は解決しません。 –
コードを間違って変更しました。更新された回答を確認してください。 – alexmac
無効なパラメータはどういう意味ですか? 'addComment'アクションの中で、' req.allParams() 'オブジェクトは、モデルを保存するのに必要なすべてのデータを含んでいます。 –