我想查询一个集合并使用一些值来更新每个文档,这些值将从另一个查询中获得,该查询将使用返回文档中的一些信息构建。
const mongoose = require('mongoose');
const userModel = {
country: { type: String }
newField: { type: String }
};
const myUsersModel = mongoose.model('user',userModel);
myUsersModel.find({country:"USA"}).forEach(function (doc) {
// another query here into a relation Database:
let anotherQuery = 'SELECT * FROM myTable WHERE name=' + doc.name;
mySQLConnection.query(
anotherQuery,
function selectCb(err, results, fields) {
if (err) {
console.log("ERROR: " + err.message);
throw err;
}
console.log("Got "+results.length+" Rows:");
let updatedInfo = results.SomeField;
// update the mongoose doc:
doc.newField = updatedInfo;
myUsersModel.save(doc);
});
mySQLConnection.end(function(err) {
console.log("connection ended.");
});
mongoose.connection.close();
});
我收到以下错误:
TypeError:myUsersModel.find(...)。forEach不是函数
答案 0 :(得分:2)
myUsersModel.find({country:"USA"})
.then(users=>users.forEach //users might be null here btw
或者如果你想保留你的回调风格
myUsersModel.find({country:"USA"}, function(err, users) {
if (err) throw err;
users.forEach
答案 1 :(得分:0)
如果未提供回调,Model.find将返回Query的实例,而不是Array的实例。 因此,您不能使用forEach,因为Query不是数组。