Javascript Mongoose查询流和请求模块

Javascript Mongoose查询流和请求模块,javascript,node.js,mongoose,mongoose-schema,node-request,Javascript,Node.js,Mongoose,Mongoose Schema,Node Request,在模型上执行查询流时,例如 User.find({}).stream().on('data', (user) => { request.post(someOptions, (error, response, body) => { if(!error && response.statusCode === 200) { user.someProperty = body.newValue; use

在模型上执行查询流时,例如

User.find({}).stream().on('data', (user) => {
    request.post(someOptions, (error, response, body) => {
         if(!error && response.statusCode === 200) {
             user.someProperty = body.newValue;
             user.save((err) => {
                 if (err) console.log(err)
             });
         } else {
             console.log(error);
             console.log(response);
         }
}).on('end', () => {
    console.log('all users have new values');
});
我正在接收结束事件的控制台输出,然后收到一个错误:

all users have new values
TypeError: user.save is not a function
    at Request._callback
我假设这意味着request.post函数运行了太多次,因为我尝试在没有流的情况下运行它,而只运行了一次

.find({} (err, users) => {
     for(user in users) {
         request.post...
     } 
});
但这从我发布到的api返回了一个错误的状态代码,即
request。post()
在我传递的选项中发送了一个
未定义的值,该值是我从用户文档获得的,即使所有文档都有定义的值。尽管如此,我并没有因为保存不是函数而收到错误


有人能解释一下发生了什么事吗

这里有一个简化版本,假设您不需要
(应该用
光标
)并且您有可用的
请求承诺本机

const users = await User.find().exec()
for(let user of users) {
    const body = await request.post(someOptions)
    if(body) {
        user.someProperty = body.newValue
        await user.save()
    }
}
从代码上看,似乎您正在制作相同的
post
,并更新每个
用户的相同值。如果是这样,为什么不:

const body = await request.post(someOptions)
if(body) {
    await User.update(
      { },
      { $set: { someProperty: body.newValue } },
      { multi: true }
    )
}

每个用户都有我在post选项中发送的唯一属性,因此第二个解决方案不起作用,但第一个解决方案很好,不知道request promise native,谢谢