Mongoose Model.save берет на ~ 1,5 + секунд, чтобы закончить, и если метод, который я пользователь Model.collection.insert вместо его только ~ 50мсMongoose .save звонок очень медленно
Второе решение, если я не ошибка ошибочна, потому что она использует собственный драйвер mongoDb. Я попытался использовать console.time, чтобы изолировать, где происходит задержка, и это происходит непосредственно перед тем, как вызывается функция Model.prototype.save, которая действительно странная.
Аутентификация auth.username проиндексирована так, что это не должно вызывать медлительность.
Ниже приведен пример схемы модели и как я вызываю новую модель.
Я использую 3.20.0 mongoose и 2.6.4 of mongoDB.
var userSchema = new Schema({
active: { type: Boolean, default: true },
player_id: ObjectId,
player: mongoose.Schema.Types.Mixed,
auth: {
token: { type: String, required: true, default: 'temp' },
username: { type: String, required: true, trim: true, lowercase: true, index: { unique: true } },
password: { type: String, required: true },
login_attempts: { type: Number, required: true, default: 0 },
locked_until: { type: Number } ,
},
contact: {
first_name: String,
last_name: String,
nick_name: String,
email: { type: String, required: true, trim: true, lowercase: true, index: { unique: true } },
phone: { type: String, required: false, trim: true, index: { unique: true, sparse: true } }
},
},{collection: 'user' });
-v-v-v-v-v-v-v-v-v-v-v-v-
var mongoose = require('mongoose'),
User = mongoose.model('User');
var newUser = new User(data);
newUser.save(function (err) {
if(err) { return cb(err); }
// Call takes ~1.5+ seconds
});
User.collection.insert(data, function(err, user){
if(err) { return cb(err); }
// Call takes ~50ms
});
Как вы на самом деле синхронизации это? Фактически вы используете исходное соединение с базой данных? –
Время ответа на запрос POST составляет 1,5 + секунды, если это было начальное соединение с БД, повторение одного и того же запроса сразу после этого было бы неплохо, но все равно. Я использую console.time ('label')> console.timeEnd ('label'), чтобы проверить, где находится задержка. – Labithiotis
Это не очень информативно. Вас задали конкретный вопрос. Измените свой вопрос, чтобы точно показать **, как вы измеряете заявленный ответ. Это дает нам кое-что для работы, чего нет в вашем нынешнем вопросе. –