Javascript Node.js mongoose.findOne不是函数
在我的应用程序中,我用我的猫鼬模型回报承诺:Javascript Node.js mongoose.findOne不是函数,javascript,node.js,mongodb,mongoose,es6-promise,Javascript,Node.js,Mongodb,Mongoose,Es6 Promise,在我的应用程序中,我用我的猫鼬模型回报承诺: var roomModel = require('../../../models/room').roomModel; roomModel.findOne({ name: req.body.roomName }) .then( (room) => { return new Promise(function(resolve, reject) { //if no roo
var roomModel = require('../../../models/room').roomModel;
roomModel.findOne({ name: req.body.roomName })
.then(
(room) => {
return new Promise(function(resolve, reject) {
//if no room present, create one, if present, check password
if (room) {
if (room.password === req.body.roomPassword) {
return resolve(room);
} else {
return reject({
code: 401,
message: 'Room password not correct'
});
}
} else {
// create new room with given data
var newRoom = roomModel({});
newRoom.name = req.body.roomName;
newRoom.password = req.body.roomPassword;
//newRoom.users = [];
newRoom.users[0] = {
name: req.body.userName
};
newRoom.save()
.then((data) => {
console.log(data);
if (!data) {
return reject({
code: 500,
message: 'Error when saving room'
});
} else {
return resolve(newRoom);
}
});
}
});
}
)
.then((room) => {
room.findOne({ 'users.name': req.body.userName })
.then((user) => {
console.log(user);
});
})
room.js模型:
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = require('./user').userSchema;
var room = new Schema({
name: String,
password: String,
users: [userSchema]
});
module.exports.roomSchema = room;
module.exports.roomModel = mongoose.model('room', room);
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var user = new Schema({
name: String
});
module.exports.userSchema = user;
module.exports.userModel = mongoose.model('user', user);
users.js模型:
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = require('./user').userSchema;
var room = new Schema({
name: String,
password: String,
users: [userSchema]
});
module.exports.roomSchema = room;
module.exports.roomModel = mongoose.model('room', room);
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var user = new Schema({
name: String
});
module.exports.userSchema = user;
module.exports.userModel = mongoose.model('user', user);
但是,当我尝试在此返回的模型上调用.findOne()函数时,出现以下错误:
TypeError: room.findOne is not a function
承诺中传递的模型不是next.then()语句中的模型吗 正如医生所说
这里甚至有一个findOne()
示例
将代码更改为
roomModel.findOne({ name: req.body.roomName }).exec().then(/* your stuff */)
你可能会有更多的运气 正如医生所说
这里甚至有一个findOne()
示例
将代码更改为
roomModel.findOne({ name: req.body.roomName }).exec().then(/* your stuff */)
你可能会有更多的运气 正如医生所说
这里甚至有一个findOne()
示例
将代码更改为
roomModel.findOne({ name: req.body.roomName }).exec().then(/* your stuff */)
你可能会有更多的运气 您在查询中遗漏了exec()方法,请尝试使用并得到解决
roomModel.find({ name: req.body.roomName }).exec().then(/* your stuff */)
您在查询中遗漏了exec()方法,请尝试使用并得到解决
roomModel.find({ name: req.body.roomName }).exec().then(/* your stuff */)
您在查询中遗漏了exec()方法,请尝试使用并得到解决
roomModel.find({ name: req.body.roomName }).exec().then(/* your stuff */)
我自己发现了问题:我传递的不是可以使用查找操作的模型,而是可以执行保存选项的文档(不是查找,因为它不是模型) 我自己发现了问题:我传递的不是可以使用查找操作的模型,而是可以执行保存选项的文档(不是查找,因为它不是模型) 我自己发现了问题:我传递的不是可以使用查找操作的模型,而是可以执行保存选项的文档(不是查找,因为它不是模型) 我应该认为你所做的是危险的。多次调用查询then()
可能会
导致多个查询调用。
另外,不需要执行exec().then()
。只需调用then()
即可执行查询;使用exec()
的更好方法是向它传递回调。我认为你所做的事情是危险的。多次调用查询then()
可能会
导致多个查询调用。
另外,不需要执行exec().then()
。只需调用then()
即可执行查询;使用exec()
的更好方法是向它传递回调。我认为你所做的事情是危险的。多次调用查询then()
可能会
导致多个查询调用。
另外,不需要执行exec().then()
。只需调用then()
即可执行查询;使用exec()
的更好方法是实际向它传递回调。您能告诉我们您从“/models/room.js”文件中导出了什么吗?更新-似乎模型本身不是问题,因为在first.then语句中,模型上的所有操作都在工作,就在我传递模型以解决问题时,我不能在thoseCan上使用mongoose方法。你能console.log(newRoom)
并发布结果吗?另外console.log(数据)
请?您能告诉我们您从“/models/room.js”文件中导出了什么吗?更新-似乎模型本身不是问题,因为在first.then语句中,模型上的所有操作都在工作,就在我传递模型进行解析时,我无法在thoseCan youconsole.log(newRoom)上使用mongoose方法
并发布结果?另外console.log(数据)
请?您能告诉我们您从“/models/room.js”文件中导出了什么吗?更新-似乎模型本身不是问题,因为在first.then语句中,模型上的所有操作都在工作,就在我传递模型进行解析时,我无法在thoseCan youconsole.log(newRoom)上使用mongoose方法
并发布结果?还有console.log(data)
please?情况并非如此-情况是,当我通过模型返回承诺(不是由.then处理,而是通过返回新承诺)时,我无法将其用作下一个承诺中的模型。exec()在我的案例中没有帮助不是这样的-案例是,当我通过模型返回承诺(不是由.then处理,而是通过返回新承诺)时,我无法在下一个承诺中将其用作模型。exec()在我的案例中没有帮助不是这样的-案例是,当我通过模型返回承诺(不是由.then处理,而是通过返回新承诺)时,我无法在下一个承诺中将其用作模型。exec()对我的情况没有帮助