Node.js Mongoose.select在与Azure函数一起使用时不是函数
我试图在azure函数中使用mongoose.select运算符,但它一直在说Node.js Mongoose.select在与Azure函数一起使用时不是函数,node.js,mongodb,azure,mongoose,azure-functions,Node.js,Mongodb,Azure,Mongoose,Azure Functions,我试图在azure函数中使用mongoose.select运算符,但它一直在说TypeError:db.collection(…).findOne(…).select不是db.collection.find.toArray的函数 它在控制台中返回用户的数据,但不使用进行筛选。选择 为什么呢 var MongoClient = require('mongodb').MongoClient; var Post = require('./model/post'); var mongoose = req
TypeError:db.collection(…).findOne(…).select不是db.collection.find.toArray的函数
它在控制台中返回用户的数据,但不使用进行筛选。选择
为什么呢
var MongoClient = require('mongodb').MongoClient;
var Post = require('./model/post');
var mongoose = require('mongoose');
module.exports = async function (context, req) {
let currentPage = 1;
MongoClient.connect(process.env.CosmosDBConnectionString, async (err, client) => {
let send = response(client, context);
if (err) send(500, err.message);
let db = client.db(process.env.dbName);
await db.collection('listings').find(
{
$and: [
{ winnerHasBeenNotified: false },
{ auctionEndDateTime: { $lte: Date.now().toString() } }
]
}
)
.toArray((err, result) => {
console.log("result");
console.log(result);
if (result) {
for (let i = 0; i < result.length; i++) {
db.collection('users').findOne(
{
_id: mongoose.Types.ObjectId(result[i].bidderId)
}
).select("notificationBy").toArray((err, result) => {
console.log("USER RESULT!");
console.log(result);
});
}
}
if (err) send(500, err.message);
send(200, JSON.parse(JSON.stringify(result)));
});
});
};
function response(client, context) {
return function (status, body) {
context.res = {
status: status,
body: body
};
client.close();
context.done();
};
}
var MongoClient=require('mongodb')。MongoClient;
var Post=要求('./型号/Post');
var mongoose=require('mongoose');
module.exports=异步函数(上下文,请求){
设currentPage=1;
MongoClient.connect(process.env.CosmosDBConnectionString,异步(err,client)=>{
let send=响应(客户端、上下文);
如果(错误)发送(500,错误消息);
设db=client.db(process.env.dbName);
等待db.collection('listings')。查找(
{
美元及:[
{winnerHasBeenNotified:false},
{auctionEndDateTime:{$lte:Date.now().toString()}
]
}
)
.toArray((错误,结果)=>{
控制台日志(“结果”);
控制台日志(结果);
如果(结果){
for(设i=0;i{
log(“用户结果!”);
控制台日志(结果);
});
}
}
如果(错误)发送(500,错误消息);
send(200,JSON.parse(JSON.stringify(result));
});
});
};
函数响应(客户端、上下文){
返回功能(状态、主体){
context.res={
状态:状态,
身体:身体
};
client.close();
context.done();
};
}
find()
返回一个游标,该游标有一个选择方法。检索单个文档,如果未提供回调,则返回承诺
如果您试图仅获取“notificationBy”字段,请尝试将字段
选项传递给findOne。一次可能会有多个获胜者返回。我们的想法是使用计时器azure函数,每10分钟获取所有已返回的获奖者winnerHasBeenNotified=false
。然后我将向这些用户发送一封电子邮件,并将DB中的值更新为true。当你说字段选项时,我对你的意思有点困惑。你能举个例子吗?