我试图使用Mongoose从MongoDB获取一个子文档,然后将数据传递给一个EJS文档,但由于_id对象,我得到了一个Uncaught SyntaxError: Invalid or unexpected token。理想情况下,我希望_id是一个字符串,但是使用toString()或toHexString()不起作用。
以下是我的基本模式:
var hikeSessionSchema = new mongoose.Schema({
hike_name: {type: String, required: true},
hike_date: {type: String, required: true},
mileage: {type: Number, required: true}
})
var hikerSchema = new mongoose.Schema({
username: {type: String, required: true},
log: [hikeSessionSchema]
})
var HikeSession = mongoose.model('HikeSession', hikeSessionSchema)
var Hiker = mongoose.model('Hiker', hikerSchema)下面是我的GET请求:
app.set('view engine', 'ejs');
...
app.get('/users/:id/:hike', (req, res) => {
var id = req.params.id;
var hikeId = req.params.hike;
Hiker.findById(id, (err, hiker) => {
const hike = hiker.log.id(hikeId)
console.log(hike)
res.render('editHike', { data: hike })
})当我使用console.log(hike)时,我会得到:
{
_id: 6125629447cec024c067c1da,
hike_name: 'Hike Name',
hike_date: '2021-08-04',
mileage: 10
}我尝试将_id作为字符串保存到一个变量中,然后用该变量替换_id,但它返回到一个对象。我也尝试过delete hike._id,但也不起作用。
我需要能够在EJS文档中引用_id供以后使用。也许有一种方法可以在不使用_id的情况下获取HikeSession对象,然后单独保存_id?我怎么才能让它工作呢?谢谢
发布于 2021-08-30 21:26:28
我想出了一个变通方法,复制没有_id字段的对象,创建一个将_id转换为字符串的变量,然后将该变量添加到新对象中。
app.get('/users/:id/:hike', (req, res) => {
var id = req.params.id;
var hikeId = req.params.hike;
Hiker.findById(id, (err, hiker) => {
var hikeData = hiker.log.id(hikeId)
var hike = (({ hike_name, hike_date, mileage }) => ({ hike_name, hike_date, mileage }))(hikeData);
var idStr = hikeData._id.toString()
hike.id = idStr;
res.render('editHike', { data: hike })
})然后导入EJS文件,如下所示:
var data = <%- JSON.stringify(data) %>;也许有一种更好的方法可以做到这一点,但这个方法奏效了。
https://stackoverflow.com/questions/68989396
复制相似问题