我找不到原因“错误:无法读取未定义的属性‘toString’”

问题描述

这是我在堆栈上的第一个问题,所以我不知道我是否描述得很好。 我有一个问题,因为在将数据放入输入(表单)并选择了参数“编辑”之后 ,它不指示所选记录。 目前,我仍然收到错误“无法读取未定义的属性'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