Я использую mongoose для подключения и запроса mongoDB.UnExpected output from mongoDB
Теперь, если у меня есть следующий код:
return new Promise((resolve) => {
mongoose.connection.db.collection('offer').aggregate([{
$match: {
$or: [
{
ccChecked: {
$lt: new Date(currentDay + 'T00:00:00.000Z')
}
},
{
ccChecked: {
$exists: 0
}
}
],
_id: { $in: offerObjIds }
}
},
{ $sample: { size: 2 } }
], (err, res) => {
console.log('res is', res);
resolve(res);
});
});
В результате обеспечивается в порядке, и мы получаем ожидаемый результат. Но если мы имеем следующий запрос, и я обеспечиваю SAMPLE_SIZE как 2:
const sampleSize = process.env.SAMPLE_SIZE
return new Promise((resolve) => {
mongoose.connection.db.collection('offer').aggregate([{
$match: {
$or: [
{
ccChecked: {
$lt: new Date(currentDay + 'T00:00:00.000Z')
}
},
{
ccChecked: {
$exists: 0
}
}
],
_id: { $in: offerObjIds }
}
},
{ $sample: { size: sampleSize } }
], (err, res) => {
console.log('res is', res);
resolve(res);
});
});
В этом случае, я получаю результат, как не определено. Может ли кто-нибудь объяснить, почему такое поведение и как разрешить это через переменную process.env.
Если я передам его в сценарии npm как «start-offer-сервис-dev»: «SAMPLE_SIZE = 2 node_modules/.bin/babel-node src/services /offerService/index.js ", то это будет строка или число? –
Yup, моя ошибка, аргументы, переданные через сценарий npm, имеют строковый тип и поэтому должны быть преобразованы в int –
См. Мое обновление :) Рад, что вы это поняли. Приветствия. – matt