2017-09-12 6 views
0

J'ai essayé d'extraire des données d'une table Postgres SQL manquante dans une autre table mais j'ai reçu SequelizeLoadingError. J'essaie de récupérer une liste de livres qui n'ont pas été loués par un utilisateur particulier.Récupération des données de la table postgresql manquante dans une autre table à l'aide de Sequelize

livre Contrôleur

getBooks(req, res) { 
    const userId = req.params.userId; 
    return Book 
     .findAll({ 
     where: Sequelize.literal('RentedBook.userId IS null'), 
     include: [ 
      { model: RentedBook } 
    ] 
    }) 
    .then((books) => { 
    if (books.length < 1) { 
     res.status(400).send({ 
     message: 'There is no book in the database' 
      }); 
     } else { 
      res.status(201).send(books); 
     } 
     }) 
     .catch(error => res.status(404).send(error)); 
    }, 

livre Modèle

export default (sequelize, DataTypes) => { 
    const Books = sequelize.define('Book', { 
    title: { 
     type: DataTypes.STRING, 
     allowNull: DataTypes.FALSE, 
    }, 
    isbn: { 
     type: DataTypes.TEXT, 
     required: true, 
    }, 
    total: { 
     type: DataTypes.INTEGER, 
     required: true 
    }, 
    prodYear: DataTypes.STRING, 
    catId: DataTypes.INTEGER, 
    cover: DataTypes.STRING, 
    author: DataTypes.STRING, 
    description: DataTypes.TEXT 
    }, { 
    classMethods: { 
     associate: (models) => { 
     // associations can be defined here 
     Books.hasMany(models.RentedBook, { 
     foreignKey: 'bookId' 
     }); 
     Books.hasOne(models.Category, { 
      foreignKey: 'catId', 
      onDelete: 'CASCADE' 
     }); 
     } 
    } 
    }); 
    return Books; 
}; 

Modèle livre loué

export default (sequelize, DataTypes) => { 
    const RentedBook = sequelize.define('RentedBook', { 
    bookId: DataTypes.INTEGER, 
    userId: DataTypes.INTEGER, 
    toReturnDate: DataTypes.DATE, 
    returnDate: DataTypes.DATE, 
    returned: { 
     type: DataTypes.BOOLEAN, 
     defaultValue: false 
    } 
    }, { 
    classMethods: { 
     associate: (models) => { 
    // associations can be defined here 
     RentedBook.BelongsTo(models.Book, { 
      foreignKey: 'bookId', 
      onDelete: 'CASCADE' 
     }); 
     RentedBook.BelongsTo(models.User, { 
      foreignKey: 'userId', 
      onDelete: 'CASCADE' 
     }); 
     } 
    } 
    }); 
    return RentedBook; 
}; 

Je vais un Je vous demande de m'aider à chercher des livres qui existent dans la table du livre mais qui n'ont pas été loués auparavant par l'utilisateur.

Répondre

0

Cela a été résolu en interrogeant la base de données du livre, en récupérant la liste des livres loués où Nom d'utilisateur n'est pas le même que le nom d'utilisateur actuellement connecté.