Я пытаюсь создать очень простой форум, используя nodejs, mongo и mongoose.mongoose document.save не работает
До сих пор я создал мангуст схему для пользователей:
var mongoose = require('mongoose');
var user = {
_id: { type: String, required: true },
password: { type: String, required: true }
};
var schema = new mongoose.Schema(user);
module.exports = schema;
module.exports.user = user;
Затем создал модель:
var mongoose = require('mongoose');
var url = 'mongodb://localhost:27017/forum'
mongoose.connect(url);
mongoose.connection.on('connected', function() {
console.log('Stablished connection on ' + url);
});
mongoose.connection.on('error', function(error) {
console.log('Something wrong happened: ' + error);
});
mongoose.connection.on('disconnected', function() {
console.log('connection closed');
});
var User = mongoose.model('User', require('./user'));
module.exports.User = User;
Наконец, есть файл, который содержит все модели (в настоящее время только один) и его методы:
var models = require('./models');
var User = models.User
exports.addUser = function(user, password) {
var data = new User({ _id: user, password: password });
data.save(function(error) {
console.log('inside');
if(error) { console.log('ERROR: ' + error); return true; }
else { console.log('User ' + user + ' added'); return false; }
});
};
exports.getUserList = function() {
User.find().lean().exec(function(error, users) {
if(error) { console.log('ERROR: ' + error); }
else { return JSON.stringify(users); }
});
}
проблема возникает, когда я выполняю этот файл:
var mongodb = require('mongodb');
var mongoose = require('mongoose');
var dm = require('./dm');
var users = { 'user1': '1234',
'user2': '1234',
'user3': '1234',
'user4': '1234'
};
console.log('Initial user list');
dm.getUserList();
for(var user in users) {
dm.addUser(user, users[user]);
}
console.log('Final user list');
dm.getUserList();
process.exit(0);
Кажется, что он ничего не делает и не сохраняет пользователей. Выход:
Initial user list
Final user list
Спасибо!
Ваш код принимает все будет работать в синхронный способ. Вам нужно либо создать функции 'addUser()' и 'getUserList', чтобы иметь обратные вызовы, либо использовать' Promises' для этого. – chridam
Добавлены обратные вызовы, но все еще не работают. Дело в том, что кажется, что он не входит в функцию .save/.find. Например, если я установил обратный вызов User.find на console.log, он ничего не подскажет – Dexter