Это мой первый вопрос, задающий вопрос о StackOverflow, и я прошу прощения за то, что он более или менее повторен или если я что-то написал неправильно. Я пытаюсь выполнить код в Random record from MongoDB, но все еще пытаюсь извлечь 4 случайных записи из моего MongoDB в узле.Случайные записи от MongoDB
В оболочке Монго, я могу успешно получить 4 случайные записи с этим:
db.reccs.find({ genre: { $in: ['fantasy']} }).limit(4).skip(Math.random() * db.reccs.count({ genre: { $in: req.query.test} }))
Однако в моем Node.js server.js файл, этот код не возвращает никаких ошибок и первые 4 записи он находит , а не случайные 4:
app.get('/comics', function(req, res) {
var comics = db.collection('reccs').find({ genre: { $in: req.query.test} }).limit(4).skip(Math.random() * db.collection('reccs').count({ genre: { $in: req.query.test} })).toArray(function(error, comics) {
if (error) {console.dir(error+"error!")}
res.send(comics)
}) })
Я полностью тупик, так что я бы признателен за любые мысли о том, почему это работает в оболочке Монго, но не в server.js. Спасибо!
Редактировать - Я считаю, что этот вопрос отличается от того, что речь идет не о оболочке Mongo, но Node.js - решение в связанном вопросе абсолютно работает в оболочке, а не в Node.js.
Редактировать 2 - Если кто-нибудь когда-либо сталкивался с этим, этот MongoDB count() undefined вместе с комментарием ниже должен помочь!
Доступ MongoDB в node.js является асинхронным, поэтому вам необходимо предоставить обратный вызов 'count', чтобы получить результат. Только после этого вы можете сделать следующий запрос 'find'. – JohnnyHK
Спасибо @JohnnyHK, получил его работу! – Victoria