Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Node.js 保存数据时出现MongoDB错误_Node.js_Mongodb - Fatal编程技术网

Node.js 保存数据时出现MongoDB错误

Node.js 保存数据时出现MongoDB错误,node.js,mongodb,Node.js,Mongodb,我有一个关于MongoDB的问题。 我想保存MongoDB数据,但发生了一些(未指定)错误。 我的服务器代码如下 router.post('/send/:to', (req, res) => { let chatFrom = req.session.loginInfo.username; let chatTo = req.params.to; if((typeof chatFrom !== 'string') || (chatFrom === '')) {

我有一个关于MongoDB的问题。 我想保存MongoDB数据,但发生了一些(未指定)错误。 我的服务器代码如下

router.post('/send/:to', (req, res) => {
    let chatFrom = req.session.loginInfo.username;
    let chatTo = req.params.to;

    if((typeof chatFrom !== 'string') || (chatFrom === '')) {
        return res.status(400).json({
            error: 'NOT LOGGED IN',
            code: 1
        });
    } else if((typeof req.body.contents !== 'string') || (req.body.contents === '')) {
        return res.status(400).json({
            error: 'NO MESSAGE TO SEND',
            code: 2
        });
    }

    Account.findOne({username: chatFrom}, (err, data) => {
        if(err) {
            throw err;
        } else if(!data) {
            return res.status(400).json({
                error: 'INVALID SENDER NAME',
                code: 3
            });
        } else {
            if(data.chatList.indexOf(chatTo) === -1) {
                data.chatList.push(chatTo);
                data.save((err) => {
                    ////////////////////////////////////////////ERROR HERE
                    throw err;
                });
            }
        }
    });

    Account.findOne({username: chatTo}, (err, data) => {
        if(err) {
            throw err;
        } else if(!data) {
            return res.status(400).json({
                error: 'INVALID PARTNER NAME',
                code: 3
            });
        } else {
            if(data.chatList.indexOf(chatFrom) === -1) {
                data.chatList.push(chatFrom);
                data.save((err) => {
                    throw err;
                });
            }        

            let newChat = new Chat({
                from: chatFrom,
                to: chatTo,
                contents: req.body.contents,
                isRead: false,
            });
            newChat.save((err) => {
                if(err) {
                    throw err;
                } else {
                    return res.json({
                        success: true
                    });
                }
            });
        }
    });
});
“///error HERE”区域发生错误。 错误日志如下所示

events.js:165 犯错误; ^

这是node.js应用程序,mongoose版本是4.7.7

++++++++++++++++++++++++++ 我的模型如下

import mongoose from 'mongoose';
const Schema = mongoose.Schema;
const Chat = new Schema({
    from: {
        type: String,
        trim: true
    },
    to: {
        type: String,
        trim: false
    },
    contents: {
        type: String,
        trim: true
    },
    isRead : {
        type: Boolean
    },
    sended: {
        type: Date,
        default: Date.now
    }
});

export default mongoose.model('chat', Chat);

请共享您的模型代码,并在代码中指定哪个方法是异常源。是的,请共享您的模式。我猜:
findOne
是一个异步调用。当节点第一次点击
findOne
时,节点将把它放在执行堆栈上,然后继续前进,只得到另一个
findOne
。如果两个调用都试图写入同一文档,则可能会发生此错误。你能用promise同步完成吗?有很多事情需要解决,但请帮助检查
数据
是mongoose模型还是普通js对象。像@Ankitgokale opnion,这似乎是异步问题。。。我在正文内容的底部添加了我的模型代码。
import mongoose from 'mongoose';
const Schema = mongoose.Schema;
const Chat = new Schema({
    from: {
        type: String,
        trim: true
    },
    to: {
        type: String,
        trim: false
    },
    contents: {
        type: String,
        trim: true
    },
    isRead : {
        type: Boolean
    },
    sended: {
        type: Date,
        default: Date.now
    }
});

export default mongoose.model('chat', Chat);