Я только что открыл nodeJS
код пытается получить случайные документы из моей коллекции mongoose
использования mongoose-random, но по какой-либо причине, когда я взываю к findRandom()
методу, ответы 500
.мангуст-случайный ответ 500
test.js
Здесь реветь я вставляю свой код:
var mongoose = require('mongoose');
var random = require('mongoose-random');
var Promise = require('bluebird');
mongoose.Promise = Promise;
var TestSchema = new mongoose.Schema({
_id: {
type: Number,
default: 0
}
});
TestSchema.plugin(random, {path: 'r'});
TestSchema.statics = {
start: function (value) {
var array = [], i = 1;
for (i; i < value; i += 1) {
array.push({ _id: i });
}
return this.create(array);
},
getRandom: function() {
return new Promise(function(resolve, reject) {
TestSchema.findRandom().limit(10).exec(function (err, songs) {
if (err) {
reject(err);
} else {
resolve(songs);
}
});
});
}
};
module.exports = mongoose.model('TestSchema', TestSchema);
routes.js
var router = require('express').Router();
var path = require('path');
var Promise = require('bluebird');
var request = require('request');
var test = require('./models/test.js');
router.get('/fill', function (req, res) {
test.start(40)
.then(function() {
res.status(200).send('You can start your hack :)');
})
.catch(function (error) {
res.status(400).send(error);
});
});
router.get('/vote', function (req, res) {
test.getRandom()
.then(function (data) {
res.status(200).send(data);
})
.catch(function (error) {
res.status(400).send(error);
});
});
module.exports = router;
Чтение другой пост here в качестве целей решения для использования syncRandom()
метод, но это не работает для меня. Не используется random()
Любая помощь? Спасибо, совет.
UPDATE
Копает больше в этот вопрос, я realiced моей модели TestSchema
, которая должна содержать mongoose-random
метод в настоящее время перекрытых, поэтому у меня есть только мои методы статики.
Ваша проблема не в мангусте. 'this' в рамках обещания' getRandom' не относится к модели, это относится к функции в 'new Promise'. В этом контексте 'findRandom' не определен. – cdbajorin
Да, извините, это была моя ошибка, когда я редактировал последний раз. – DevStarlight
Если ваш сервер MongoDB не менее 3,2, вам, вероятно, лучше использовать встроенную ['$ sample'] (https://docs.mongodb.com/manual/reference/operator/aggregation/sample/#pipe ._S_sample). – JohnnyHK