模型未使用猫鼬保存到MongoDB

时间:2020-02-08 10:52:46

标签: javascript node.js mongodb mongoose readline

我正在尝试注册用户并将该用户保存到MongoDB。我正在使用nodejs readline模块创建用户。但是,当我尝试将其保存到mongodb时,它不起作用。它也不返回任何error

这是代码

const { Admin, validate } = require('../models/admin');
const mongoose = require('mongoose');
const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

const print_error = '\x1b[31m%s\x1b[0m'; 
const print_success = '\x1b[32m%s\x1b[0m'; 

function createUser() {
    rl.question('Please Enter Username : ', (username) => {
        rl.question('Please Enter a Password : ', async(password) => {
            const adminObject = {
                username,
                password
            };
            const { error } = validate(adminObject);
            if (error) {
                rl.close()
                rl.removeAllListeners()
                return console.log(print_error, error.details[0].message);
            }

            let admin = await new Admin({
                username: username,
                password: password
            });
            console.log(admin);
            const result = await admin.save(function(err,res){
                if(err){
                    console.log('err',err);
                    return console.log('err',err);
                }
                else return console.log('res', res);
            }); // save is not working
            console.log(print_success, result);
            rl.close(process.exit(1)); // close the process after done saving
        });
    });
}
createUser();

管理模型

const mongoose = require('mongoose');
const Joi = require('joi');

const Admin = new mongoose.model('Admin', new mongoose.Schema({
    username: {
        type: String,
        required: true,
        minlength: 1,
        maxlength: 10,
        unique: true
    },
    password: {
        type: String,
        required: true,
        minlength:3,
        maxlength: 1024
    }
}));

function validateAdmin(admin){
    const schema = {
        username: Joi.string().min(1).required(),
        password: Joi.string().min(3).required()
    };
    return Joi.validate(admin, schema);
}

exports.Admin = Admin;
exports.validate = validateAdmin;

PS -我已经连接到mongodb,连接成功。

1 个答案:

答案 0 :(得分:1)

我不知道为什么您使用<main class="chess-board"> <section class="upper-numbers"> <div class="numbers"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> </div> </section> <section class="main-field"> <div class="field">a</div> <div class="field">b</div> <div class="field">c</div> <div class="field">d</div> <div class="field">e</div> <div class="field">f</div> <div class="field">g</div> <div class="field">h</div> <div class="field">i</div> <div class="field">j</div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field">q</div> <div class="field">r</div> <div class="field">s</div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> <div class="field"></div> </section> <section class="lower-numbers"> <div class="numbers"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> </div> </section> </main>,然后在async/await中使用function

您可以使用以下代码更改save函数:

createUser

如果您有任何问题,请在下面的评论中告诉我。

已更新:测试代码后,function createUser() { rl.question('Please Enter Username : ', (username) => { rl.question('Please Enter a Password : ', async(password) => { const { error } = validate({ username, password }); if (error) { rl.close() rl.removeAllListeners() return console.log(print_error, error.details[0].message); } let admin = new Admin({username, password }); try { const result = await admin.save(); console.log(print_success, result); rl.close(process.exit(1)); } catch(ex) { console.log(ex.message); } }); }); } 中没有连接。

我已经在您的createUser.js上方的下方添加了此连接,并且该连接正在运行:

createUser()

请确保已将连接添加到mongoose.connect('mongodb://localhost:27017/url-shortener');

我希望它能为您提供帮助。