Próbuję użyć Mongoose do połączenia MongoDB z Nodejs.Błąd "Obiekt nie ma metody xxx" podczas używania Mongoose
Mam mój kod jak poniżej. Kiedy próbuję zrobić GET/POST poprzez API/użytkowników dostaję
Błąd
TypeError: Object function model(doc, fields, skipId) {
[08/14 21:28:06 GMT+0800] if (!(this instanceof model))
[08/14 21:28:06 GMT+0800] return new model(doc, fields, skipId);
[08/14 21:28:06 GMT+0800] Model.call(this, doc, fields, skipId);
[08/14 21:28:06 GMT+0800] } has no method 'list'
Czy ktoś mógłby wyjaśnić, co robię źle? Musiałem podzielić mój kod do różnych plików, ponieważ mam wiele funkcji i nie chcę zadzierać je albo moi app.js lub indeks/routes.js
app.js
//database connection
mongoose.connect('....');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback() {
console.log("Conncection Success !");
});
users_module= require('./custom_modules/users.js');
users_module.init_users();
...
app.get('/api/users',user.list); // routing code from expressjs
/custom_modules/users.js
function init_users() {
userSchema = mongoose.Schema({
//id: Number,
usernamename: String,
hash: String,
...
});
userSchema.methods.list = list;
UserModel = mongoose.model('User', userSchema);
}
function list() {
return UserModel.find(function (err, users) {
if (!err) {
return users;
} else {
return console.log(err);
}
});
});
exports.init_users = init_users;
szlaki/user.js
exports.list = function (req, res){
var users = UserModel.list(); // <---------- This is the error Line
return res.send(users);
}
Na którym linia widziałaś ten błąd? – zsong
Zaktualizowałem błąd w pytaniu. A także wskazał linię, w której wystąpił błąd. Błąd występuje wewnątrz tras/user.js –
'UserModel' nie ma metody' list'. Dodałeś go do instancji 'UserModel' używając' methods.' Możesz dodać 'UserModel.list = list', aby go dodać. – WiredPrairie