Javascript 如何在快速路线中使用.findOne填充.findOne?

Javascript 如何在快速路线中使用.findOne填充.findOne?,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我正在学习Node、Mongoose和Express,尝试构建一个crudapi。当尝试使用.populate函数“连接”两个MongoDB集合时,我得到一个错误 db.collection(…).findOne(…).populate不是函数 我的javascript不是很好,所以我试着用不同的方法重写它,但没有用 server.js require('./models/User') require('./models/Product') var db mongodb.MongoClie

我正在学习Node、Mongoose和Express,尝试构建一个crudapi。当尝试使用.populate函数“连接”两个MongoDB集合时,我得到一个错误

db.collection(…).findOne(…).populate不是函数

我的javascript不是很好,所以我试着用不同的方法重写它,但没有用

server.js

require('./models/User')
require('./models/Product')

var db 

mongodb.MongoClient.connect('mongodb://<username>:</password>@xxxx.mlab.com:xxx/xxx', (err, database) => {
if (err) return console.log(err)
    db = database
    app.listen(3000, function() {
        console.log("listening on port 3000");
    })
})

app.get('/api/users/:id', (req, res) => {
db.collection(USERS_COLLECTION).findOne({ id: (req.params.id) }).populate('product'), (err, doc) => {
    if (err) handleError(res, err.message, 'Failed to get user')

    res.status(200).json(doc)   
    console.log(req.params)
 }
})
 var mongoose = require('mongoose')

 var UserSchema = new mongoose.Schema({
 id: String,
 first_name: String,
 last_name: String
 id: {
 type: mongoose.Schema.Types.ObjectId,
 ref: 'Product'
 }
})

mongoose.model('User', UserSchema)

集合没有mongoose的模型API,包括
.populate
。您应该使用在mongoose中注册的模型,而不是直接使用集合

var schema=newmongoose.schema(…);
var User=mongoose.model('User',schema);
//您还可以在通过mongoose.model('User')注册模型后获取该模型
app.get('/api/users/:id',(req,res)=>{
User.findOne({id:(req.params.id)}).populate('product'),(err,doc)=>{
if(err)handleError(res,err.message,“无法获取用户”)
res.status(200).json(doc)
控制台日志(请求参数)
}

})
哪个节点模块是
db
?如果您使用的是Mongoose,那么您可以使用模式方法,因此您应该能够在模型上使用
。填充
object@Sangharsh我已经添加了如何将db设置到代码顶部。很好,我将尝试一下。我的初始错误是“用户未定义”,因此我假设我的模式设置不正确。我现在来调查一下。谢谢我认为您之所以会出现此错误,只是因为您没有在这个确切的文件中定义变量。使用
var User=mongoose.model('User')
(或您注册架构时使用的任何名称)。我在最初的帖子中添加了我认为相关的其他片段。非常感谢您的帮助只要在
var db
之后添加
var User=mongoose.model('User')
就可以了。我不再收到错误,但我没有得到我期望的结果。这是个好问题。在正确的轨道上…谢谢你的帮助!