我正在开发节点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;
我在编写此代码时正在关注教程,并且我希望它能随着我逐步遵循教程而工作。
答案 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);
});