Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js mongoose.findOne不是函数_Javascript_Node.js_Mongodb_Mongoose_Es6 Promise - Fatal编程技术网

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 you
console.log(newRoom)上使用mongoose方法
并发布结果?另外
console.log(数据)
请?您能告诉我们您从“/models/room.js”文件中导出了什么吗?更新-似乎模型本身不是问题,因为在first.then语句中,模型上的所有操作都在工作,就在我传递模型进行解析时,我无法在thoseCan you
console.log(newRoom)上使用mongoose方法
并发布结果?还有
console.log(data)
please?情况并非如此-情况是,当我通过模型返回承诺(不是由.then处理,而是通过返回新承诺)时,我无法将其用作下一个承诺中的模型。exec()在我的案例中没有帮助不是这样的-案例是,当我通过模型返回承诺(不是由.then处理,而是通过返回新承诺)时,我无法在下一个承诺中将其用作模型。exec()在我的案例中没有帮助不是这样的-案例是,当我通过模型返回承诺(不是由.then处理,而是通过返回新承诺)时,我无法在下一个承诺中将其用作模型。exec()对我的情况没有帮助