J'ai passé des heures à essayer de comprendre cela. J'ajoute un nouveau modèle à mon application, mais cela échoue avec "TypeError: List.find n'est pas une fonction". J'ai un autre modèle, Items, qui est configuré de la même manière et qui fonctionne bien. Les choses semblent échouer dans la route, mais cela fonctionne si je le raccorde au modèle Item. Est-ce que je déclare le schéma de manière incorrecte? Dois-je initier le modèle en Mongo ou quelque chose?
modèle
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var listSchema = new Schema({
name: { type: String, default: datestring + " List" }
});
mongoose.exports = mongoose.model('List', listSchema);
route
app.get('/lists', function (req, res, err) {
List.find(function (err, docs){ //THIS IS WHAT'S FAILING
res.json(docs);
});
});
manette
angular.module('pickUp').controller('ListsCtrl', ['$scope', '$http', 'ngDialog', 'lists',
function($scope, $http, ngDialog, lists) {
$scope.lists = lists.lists;
}]);
usine
angular.module('pickUp').factory('lists', ['$http',
function($http){
var lists = {
lists: []
};
lists.getAll = function(){
console.log("trying. . .");
$http.get('/lists').success(function(res){
angular.copy(res, lists.lists);
});
};
return lists;
}]);
config
$stateProvider
.state('/', {
url: '/',
templateUrl: 'views/lists.html',
controller: 'ListsCtrl',
resolve: {
listPromise: ['lists', function (lists){
return lists.getAll();
}]
L'exportation de votre module est incorrecte
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var listSchema = new Schema({
name: { type: String, default: datestring + " List" }
});
**mongoose.exports = mongoose.model('List', listSchema);** <!-- this is wrong -->
cA devrait etre
**module.exports = mongoose.model('List', listSchema)**
j'ai fait face à ce problème. pour résoudre cela, vous devez comprendre une logique . vous devez appeler .find
comme une promesse de modéliser qui est importé du fichier de modèles.
exemple:
const member = require('..// path to model')
//model initiation
const Member = new member();
exports.searchMembers = function (req,res) {
Member.find({},(err,docs)=>{
res.status(200).json(docs)
})
}
ce code ne fonctionne pas parce que j'ai appelé find()
au schéma initié
code qui fonctionne:
exports.searchMembers = function (req,res) {
member.find({},(err,docs)=>{
res.status(200).json(docs)
})
}
ici j’ai appelé .find()
directement au modèle importé
Pour importer une instance de modèle et une méthode d'appel, par exemple
modelfile.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const NotificationSchema = new Schema({
count: Number,
color: String,
icon: String,
name: String,
date: {type: Date, default: Date.now },
read: Boolean
});
module.exports = mongoose.model('notifications', NotificationSchema);
queryfile.js
const Notification = require('./models/model-notifications');
function totalInsert(online) {
let query = { name: 'viewed count' };
Notification.find(query,(err,result)=>{
if(!err){
totalCount.count = online + result.length;
totalCount.save((err,result)=>{
if(!err){
io.emit('total visitor', totalCount);
}
});
}
});
}