#mongodb #mongoose
Вопрос:
Я пытаюсь использовать модель мангуста в теге скрипта файла ejs. После этого я получаю странную ошибку в консоли браузера.
Uncaught SyntaxError: Unexpected token 'amp;'
Это мой код ejs:
lt;!DOCTYPE htmlgt; lt;html lang="en"gt; lt;headgt; lt;meta charset="UTF-8"gt; lt;meta http-equiv="X-UA-Compatible" content="IE=edge"gt; lt;meta name="viewport" content="width=device-width, initial-scale=1.0"gt; lt;titlegt;Products Categorylt;/titlegt; lt;/headgt; lt;bodygt; lt;h1gt;Sort Products by Categorylt;/h1gt; lt;label for="categorySelector"gt;Select Category: lt;/labelgt; lt;select name="category" id="categorySelector"gt; lt;% for (let category of categories) {%gt; lt;option value="lt;%= category %gt;"gt; lt;%= category[0].toUpperCase() %gt;lt;%= category.slice(1) %gt; lt;/optiongt; lt;% } %gt; lt;/selectgt; lt;h2gt;lt;%= Product %gt; lt;/h2gt; lt;ul id="sortList"gt; lt;/ulgt; lt;a href="/products"gt;All Productslt;/agt; lt;scriptgt; // const Product = require('./models/product'); const h3 = document.createElement('h3'); const ul = document.querySelector('#sortList'); const select = document.querySelector('#categorySelector'); const clear = function () { h3.innerText = ''; const lis = document.querySelector('li'); if (lis) { for (let li of lis) { li.innerText = '' } } } select.addEventListener('change', clear); select.addEventListener('change', async function () { // console.log(this.value); const products = await lt;%=Product%gt;.find({category: this.value}).then(data =gt; data); h3.innerText = `Products under ${this.value[0].toUpperCase()}${this.value.slice(1)} category`; for (let product of products) { for (let value in product) { const li = document.createElement('li'); if (value == 'category') { li.innerHTML = `Category: lt;a href='/product?category=${product[value]}'gt;${product[value]}lt;/agt;` } else { li.innerText = `${value[0].toUpperCase()}${value.slice(1)}: ${product[value]}`; } } } }); lt;/scriptgt; lt;/bodygt; lt;/htmlgt;
Я также пытаюсь добавить некоторые события на страницу, а затем получить данные из базы данных мангуста после события. Вот мой index.js:
const express = require('express'); const app = express(); const path = require('path'); const methodOverride = require('method-override'); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(express.urlencoded({extended: true})); app.use(methodOverride('_method')); const mongoose = require('mongoose'); const Product = require('./models/product'); const categories = ['fruit', 'vegetable', 'dairy']; const productSchema = new mongoose.Schema({ name: { type: String, required: true, }, price: { type: Number, min: 0, required: true }, category: { type: String, enum: ['vegetable', 'fruit', 'dairy'], lowercase: true } }) const Product = mongoose.model('Product', productSchema); mongoose.connect('mongodb://localhost:27017/farmShop', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() =gt; { console.log('CONNECTION SUCCESSFUL'); }) .catch(err =gt; { console.log('ERROR IN CONNECTION'); console.log(err); }) app.listen(3000, () =gt; { console.log('Server running at localhost port 3000') }) app.get('/products/category', (req, res) =gt; { // Passing Product model to the ejs fiel res.render('products/category', { categories, Product }); })
Я новичок в этом, поэтому не могу правильно понять, в чем проблема. Заранее спасибо.