如何将 Mongoose 集合传递给 js 文件中的函数?
How do I pass a Mongoose Collection to a function in a js file?
我正在做一个项目,我希望能够根据类似于您在 Revzilla.com 上选择顶部的我的车库后找到的表单输入来搜索摩托车数据库。该表格将在项目的多个位置使用。
我将 bikeLists 传递到我的 routes/index 文件中的索引
const express = require('express');
const router = express.Router();
const bikeDBModel = require('../models/bike')
const mongoose = require('mongoose');
const { collection } = require('../models/bike');
const BikesDBConnection = mongoose.connection.useDb('bikes')
router.get('/',(req,res)=>{;
const collection = BikesDBConnection.collection('harley-davidson')//Harley is the only Maker supported at the moment(change to all-bikes) soon.
res.render('index', {'bikesList':collection})
});
module.exports = router;
我可以让它显示在我的 view/index.ejs 文件中
<%= bikesList %>
<%- include('./partials/part-bikeSelector.ejs') %>
**更新:**根据我的研究,我发现您应该 能够通过执行以下操作使其正常工作,但我仍然得到“bikesList not定义”错误
<%- include('./partials/part-bikeSelector.ejs', {bikesList:bikeList) %>
但无法获取到part-bikeSelector.ejs下的包含文件
<%= bikesList %>
<form action="" method="post" class="bikeSelectorForm">
<div class="yearSelect">
<select name="bikeYear" id="bikeYear" onchange="getBikeModels()">
<option disabled selected value>Year</option>
<% for( let i = new Date().getFullYear(); i >= 2000; i-- ) { %>
<option value="<%= i %>"><%= i %></option>
<% } %>
</select>
</div>
<div class="makeSelect">
<select name="bikeMake" id="bikeMake">
<option disabled selected value>Motorcycle Make</option>
<option value="Harley">Harley Davidson</option>
<optgroup label="Coming Soon">
<option disabled value="Yamaha">Yamaha</option>
<option disabled value="Honda">Honda</option>
<option disabled value="Kawasaki">Kawasaki</option>
<option disabled value="Indian">Indian</option>
</optgroup>
</select>
</div>
</form>
<script src="/js/bikeSelector.js"></script>
理想情况下,我想将它进一步传递给从部分链接的纯 js 文件-bikeSelector.ejs
const bikeYear_formField = document.getElementById('bikeYear');
//get list of models based on year and make of form fields
function getBikeModels() {
console.log(bikesList);
}
完全看错了。答案是重新考虑我的方法。我创建了一个 REST API,我可以在需要时获取所有数据。
我正在做一个项目,我希望能够根据类似于您在 Revzilla.com 上选择顶部的我的车库后找到的表单输入来搜索摩托车数据库。该表格将在项目的多个位置使用。
我将 bikeLists 传递到我的 routes/index 文件中的索引
const express = require('express');
const router = express.Router();
const bikeDBModel = require('../models/bike')
const mongoose = require('mongoose');
const { collection } = require('../models/bike');
const BikesDBConnection = mongoose.connection.useDb('bikes')
router.get('/',(req,res)=>{;
const collection = BikesDBConnection.collection('harley-davidson')//Harley is the only Maker supported at the moment(change to all-bikes) soon.
res.render('index', {'bikesList':collection})
});
module.exports = router;
我可以让它显示在我的 view/index.ejs 文件中
<%= bikesList %>
<%- include('./partials/part-bikeSelector.ejs') %>
**更新:**根据我的研究,我发现您应该 能够通过执行以下操作使其正常工作,但我仍然得到“bikesList not定义”错误
<%- include('./partials/part-bikeSelector.ejs', {bikesList:bikeList) %>
但无法获取到part-bikeSelector.ejs下的包含文件
<%= bikesList %>
<form action="" method="post" class="bikeSelectorForm">
<div class="yearSelect">
<select name="bikeYear" id="bikeYear" onchange="getBikeModels()">
<option disabled selected value>Year</option>
<% for( let i = new Date().getFullYear(); i >= 2000; i-- ) { %>
<option value="<%= i %>"><%= i %></option>
<% } %>
</select>
</div>
<div class="makeSelect">
<select name="bikeMake" id="bikeMake">
<option disabled selected value>Motorcycle Make</option>
<option value="Harley">Harley Davidson</option>
<optgroup label="Coming Soon">
<option disabled value="Yamaha">Yamaha</option>
<option disabled value="Honda">Honda</option>
<option disabled value="Kawasaki">Kawasaki</option>
<option disabled value="Indian">Indian</option>
</optgroup>
</select>
</div>
</form>
<script src="/js/bikeSelector.js"></script>
理想情况下,我想将它进一步传递给从部分链接的纯 js 文件-bikeSelector.ejs
const bikeYear_formField = document.getElementById('bikeYear');
//get list of models based on year and make of form fields
function getBikeModels() {
console.log(bikesList);
}
完全看错了。答案是重新考虑我的方法。我创建了一个 REST API,我可以在需要时获取所有数据。