TypeError: Невозможно прочитать свойство 'userID' со значением NULL - PullRequest
0 голосов
/ 06 апреля 2019

Ошибка:

TypeError: Невозможно прочитать свойство 'userID' с нулевым значением

Перечислили мои UserDB.js и profileController.js, неуверенные в отношении этой ошибки. Когда я перехожу со своей страницы и захожу в myItems (корзину), она выдает эту ошибку.

router.get('/myItems', function(req, res, next){
res.locals.signin = req.session.signin;
var UserDB = require('../models/UserDB');
var Users = UserDB.getUser();
console.log(Users);
var LocalUser = Users.find(function (ele) {if (ele.userID === req.session.signin) {return ele;}});
if (SessionOn) {
    var UserProfiles = UserDB.GetUserProfiles();
    var LocalProfile = UserProfiles.find(function (ele) {if (ele.GetUserID() === LocalUser.userID) {return ele};});
}

res.render('myItems', {LocalUser: LocalUser, LocalProfile: LocalProfile, Session: res.locals.signin, SessionOn: SessionOn});
next()
});

-------------------

var mongoose = require('mongoose');
   mongoose.connect('mongodb://localhost:27017/DB');
   var Schema = mongoose.Schema;

    var userDataSchema = new Schema({
    userID: {type: String, required: true},
    password: {type: String, required: true},
    firstName: {type: String, required: true},
    lastName: {type: String, required: true},
    email: {type: String, required: true},
    city: {type: String, required: true},
    state: {type: String, required: true},
    zipCode: {type: String, required: true}

    },{collection: 'User'});

    var UserData = mongoose.model('User', userDataSchema);

    function getAllUsers(){
    try{
        return UserData.find({});
    } catch(e){
        console.log(e);
    }
    }

    function getUser(user){
    try{
        return  UserData.findOne({userID: user});

    }catch(e){
        console.log("error " + e);
    }
    }

    module.exports.getUser = getUser;
    module.exports.getAllUsers = getAllUsers;

1 Ответ

0 голосов
/ 06 апреля 2019

ваша функция запроса модели mongoose Users.find () предоставляет вам массив объектов. Поэтому, если вы хотите получить доступ к нему так, как вы его использовали, попробуйте вот так

Users.findOne({userid:xxx},callback);

или вам нужно получить доступ к массивуиндекс, если вы используете его метод find ()

Users.find({userId:xxx},(users)=>{users[0]==neededId}
...