.find不是函数错误

时间:2018-08-29 21:58:03

标签: javascript node.js mongoose

我正在开发节点js剩余服务器,而我的Schema查询有问题。当我达到终点时,出现错误TypeError: user.find is not a function

以下是我的user.js文件

var {mongoose} = require('../../dbcore/mongoose');
var Schema = mongoose.Schema;

module.exports = mongoose.model('User',new Schema( {

    basicId: Schema.ObjectId,

    activePurchaseIDs: {
        type: [Schema.ObjectId],
        default: []
    },

    activeOrderIDs: {
        type: [Schema.ObjectId],
        default: []
    },

    paymentOptionIDs: {
        type: [Schema.ObjectId],
        default: []
    },

    addressIDs: {
        type: [Schema.ObjectId],
        default: []
    },

    interestIDs: {
        type: [Schema.ObjectId],
        default: []
    }

}));

,这是导入/需要的地方。

var URLS = require('./urls');
var User = require('../schemas/user/user');

function init(app,mongoose) {

    app.get(URLS.USERS_URL,(req,res)=>{

        var user = new User({});

        user.find().then((users)=>{
            res.send({users});
        },(err)=>{
            res.status(400).send(err);
        });


    });



}

module.exports = init;

我在编写此代码时正在关注教程,并且我希望它能随着我逐步遵循教程而工作。

4 个答案:

答案 0 :(得分:2)

调用var user = new User({})时,您将基于User模型创建一个新的MongoDB文档,并将其分配给var user

单个user文档没有find()函数,但是您的User模型却有。

var user = new User({});
User.find().then(...);

答案 1 :(得分:0)

您对数据库的调用应如下所示:

User.find().then((users)=>{
    res.send({users});
     }).catch((err)=>{
       res.status(400).send(err);
      });

您应该直接在模块上调用它,因为猫鼬会隐式处理创建,并且不需要创建新对象。

我不确定您的架构是否正确定义,但是我不会说您的教程是错误的。您应该进入mongo shell并检查是否创建了架构以验证其设计正确。

答案 2 :(得分:0)

就我而言,我写错了,因此请检查您的文件导出 module.exports = XYZ 格式。

PS:- 我是这样写的exports.module = XYZ

答案 3 :(得分:0)

app.get(URLS.USERS_URL, async (req,res)=>{

    const userList = await User.find();

    if(!userList) {
      res.status(500).json({success: false});
    }
    res.send(userList);

});