私は現在、次の問題を抱えています: mongoDBからデータを取得できず、クライアント側または別のルート上に表示できません。私はいくつかの試みを使用しました:フォーム入力とpugテンプレートレンダラー経由でMongodbからデータを取得
app.get('/output', function(req, res){
Users.find(function (err, users){
res.render('help', {users: users});
});
});
しかし、これは「ユーザーが定義されていません」で終わります。 mongoシェルを使用して 'show collections'を照会すると、フォーム入力のデータで 'users'コレクションが見つかります。
以下のコードに基づいてデータを取得し、#{users.firstName}のように 'index.pug'に表示する方法を誰かに教えていただければ幸いです。
App.jsコード:
var express = require('express');
var app = express();
var router = express.Router();
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
app.get('/', function (req, res) {
res.render('index', function(err, html) {
res.send(html);
});
});
app.set('view engine', 'pug');
app.set('views', __dirname + '/views');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(methodOverride('_method'));
app.use(express.static(__dirname + '/public'));
mongoose.connect('mongodb://localhost/myexpressapp');
var Schema = new mongoose.Schema({
_id : String,
firstName : String,
lastName : String,
City : String,
Country : String
});
var user = mongoose.model('user', Schema);
app.post('/send', function(req, res){
new user({
_id: req.body.email,
firstName: req.body.firstName,
lastName: req.body.lastName,
City: req.body.city,
Country: req.body.country
}).save(function(err, doc){
if(err) res.json(err);
else res.send('Successfully inserted');
});
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
index.pugコード:あなたはモデルvar user = mongoose.model('user', Schema);
見つけるの正しい使用方法と定義user
を使用する必要が
doctype html
html(lang='en')
head
meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(name='viewport', content='width=device-width, initial-scale=1')
// The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags
// Bootstrap
link(href='css/bootstrap.min.css', rel='stylesheet')
// HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries
// WARNING: Respond.js doesn't work if you view the page via file://
//if lt IE 9
script(src='https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js')
script(src='https://oss.maxcdn.com/respond/1.4.2/respond.min.js')
body
form(action='/send' method='POST')
| Email:
br
input(type='text', name='email', value='#{user.firstName}')
br
| First Name:
br
input(type='text', name='firstName', value='')
br
| Last Name:
br
input(type='text', name='lastName', value='')
br
| City:
br
input(type='text', name='city', value='')
br
| Country:
br
input(type='text', name='country', value='')
br
input(type='submit', value='Submit')
// jQuery (necessary for Bootstrap's JavaScript plugins)
script(src='https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js')
// Include all compiled plugins (below), or include individual files as needed
script(src='js/bootstrap.min.js')
さて、あなたのモデルは、ユーザーではないユーザーである:私は誰かがこれで立ち往生している場合には、ここで作業コードだ、それを考え出しました。あなたはここでそれを定義しました:var user = mongoose.model( 'user'、Schema); – Masterakos
貢献してくれてありがとう、私もこれを試しましたが、それは 'ユーザーが定義されていません。'と応答します。 – Thimxo
あなたのコードで定義されている 'User'ではなく' user'(小文字)です。 – Masterakos