[英]I can not find the reason “ERROR: Cannot read property ‘toString’ of undefined”
这是我在堆栈上的第一个问题,所以我不知道我是否描述得很好。 我有一个问题,因为在将数据放入输入(表单)并选择参数“edit”后,它并不表示所选记录。 目前,我仍然收到错误“无法读取未定义的属性'toString'”,请告诉我
控制器:
exports.editWynajmyList = (req, res, next) => {
const wynId = req.params.wynId;
WynajmyRepository.getWynajmyById(wynId)
.then(wyn => {
res.render('pages/wynajmy-form', {
wyn: wyn,
formMode: 'edit',
pageTitle: 'Edycja wynajmy',
btnLabel: 'Edytuj wynajm',
formAction: '/wynajmy/edit',
navLocation: 'wyn'});
});
}
存储库:
exports.getWynajmyById = (wynId) => {
const query = `SELECT w._id as w_id, w.data_rozp, w.data_zak, w.ubezp, a._id as a_id, a.vin, a.marka, a.model, a.rocznik, a.model_silnika, a.wyposazenie, k.imie, k.nazwisko
FROM Wynajmy w
left join Klienci k on w.kli_id = k._id
left join Auta a on w.aut_id=a._id
where w._id=?`
return db.promise().query(query, [wynId])
.then((results, fields) => {
const row = results[0][0];
if(!row){
return{};
}
const wynajmy = {
_id: wynId,
data_rozp: row.data_rozp,
data_zak: row.data_zak,
ubezp: row.ubezp,
auto: {
_id: row.aut_id,
vin: row.vin,
marka: row.marka,
model: row.model,
rocznik: row.rocznik,
model_silnika: row.model_silnika,
wyposazenie: row.wyposazenie
},
klient: {
_id: row.kli_id,
imie: row.imie,
nazwisko: row.nazwisko,
pesel: row.pesel
}
};
console.log(wynajmy);
return wynajmy;
})
.catch(err => {
console.log(err);
throw err;
});
};
.ejs
<label for="vin">VIN pojazdu:<sup>*</sup></label>
<select id="vin" name="aut_id" required <%=(formMode=='showDetails' ) ? 'disabled' : '' %> >
<option value="" selected>--- Wybierz auto ---</option>
<% for (let i=0; i<allAuts.length; i++) { let aut=allAuts[i]; %>
<option value="<%= aut._id %>" label="<%= aut.vin %>" <%=(wyn._id && aut._id.toString() == wyn.auto._id.toString() ) ? 'selected' : '' %>></option>
<% } %>
</select>
<span id="errorVIN" class="errors-text"></span>
错误“无法读取未定义的 toString 属性”意味着您正在对不存在(未定义)的东西调用toString()
)。 在您的代码中,我可以看到您在“aut._id”上调用了toString()
,而我认为您的意思是 auto._id。
<%=(wyn._id && auto._id.toString() == wyn.auto._id.toString() ) ? // auto instead of aut
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.