Доступ к MongoDB в HTML

StackOverLow спросил: 28 марта 2018 в 02:29 в: javascript

Я новичок в веб-программировании, и я хочу создать страницу профиля для зарегистрированных пользователей на своем веб-сайте, и я не могу понять, как. Как правило, это имя пользователя и фотография, которую он выбрал.

p> Это мой код profile.handlebars:
<div class="row">
    <div class="col-md-4">
        <h1><%= user.firstName + " " + user.lastName %></h1>
        <div class="thumbnail">
            <img src="<%= user.avatar %>" alt="user profile image">
            <div class="caption"><a href="mailto:<%= user.email %>"><%= user.email %></a></div>
        </div>    </div>
</div>
    <div class="col-md-8">
        description 
    </div>

, и это модель user.js:

var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');
var passportLocalMongoose = require("passport-local-mongoose");// User Schema
var UserSchema = mongoose.Schema({
    username: {
        type: String,
        index:true
    },
    password: {
        type: String
    },
    email: {
        type: String
    },
    name: {
        type: String
    },
    avatar: {
        type: String
    }
});UserSchema.plugin(passportLocalMongoose);
var User = module.exports = mongoose.model('User', UserSchema);

Что происходит, так это то, что код profile.handlebars просто печатает "<% = user ...", поскольку это строка, и я хочу, чтобы она печатала имя пользователя, которое теперь вошло в систему.

Это ошибки Я получаю при открытии страницы profile.handlebars:

URIError: Failed to decode param '%3C%=%20user.avatar%20%%3E'
    at decodeURIComponent (<anonymous>)
    at decode_param (I:\Programming\Gamon2\node_modules\express\lib\router\layer.js:172:12)
    at Layer.match (I:\Programming\Gamon2\node_modules\express\lib\router\layer.js:148:15)
    at matchLayer (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:574:18)
    at next (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:220:15)
    at Function.handle (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:174:3)
    at router (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:47:12)
    at Layer.handle [as handle_request] (I:\Programming\Gamon2\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:317:13)
    at I:\Programming\Gamon2\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:335:12)
    at next (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:275:10)
    at I:\Programming\Gamon2\node_modules\express\lib\router\index.js:635:15
    at next (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:260:14)
    at Function.handle (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:174:3)
    at router (I:\Programming\Gamon2\node_modules\express\lib\router\index.js:47:12)

Спасибо заранее!

1 ответ

Есть решение
Christophe Thiry ответил: 31 марта 2018 в 09:58

Попробуйте использовать {{user.avatar}} и {{user.email}}

<% =% > нотация используется в JSP для руля, вы должны использовать фигурные скобки {{}} вокруг ваших переменных.

StackOverLow ответил: 02 апреля 2018 в 06:12
Он сработал, он обнаружил, что это javascript, но он не дает информацию о пользователе, оставляет его пустым. Не могли бы вы знать почему?
Christophe Thiry ответил: 02 апреля 2018 в 03:06
Что вы подразумеваете под пользовательскими данными?
StackOverLow ответил: 04 апреля 2018 в 12:42
User.name, User.email и т. Д.
Christophe Thiry ответил: 05 апреля 2018 в 04:49
Попробуйте {{this}} вместо {{user.avatar}}, чтобы увидеть, что вы что-то получаете. Если да, попробуйте вызвать пользователя {{user}}, чтобы узнать, получен ли пользователь.