با یک تیر دو نشان بزنید🎯 یک هدیه ۳ میلیون تومانی به همراه ۲۵٪ تخفیف روی همه دوره‌های متخصص😍
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Soroosh
مشکل با mongodb
کیوان علی محمدی حل شده توسط کیوان علی محمدی

با عرض سلام و درود خدمت دوستان و استاد عزیز من یک سوالی دارم که مربوط به مباحث جلوتر دوره میشه ولی با اجازتون اینجا مطرحش میکنم، من توی برنامه اکسپرسی که نوشتم سعی میکنم یک آبجکت به نام newUser را توی دیتا بیس mongodb سیو کنم منتها با خطای زیر مواجه میشم. و مونگو دی بی را هم سعی کردم از طریق mlab.com تعریف کنم و استفاده کنم ولی نشد. به خاطر همین به صورت local نصبش کردم و برای کانکت شدن به دیتا بیس از رشته ی mongodb://localhost:۲۷۰۱۷ استفاده میکنم

 

کد من در فایل users.js:

const express = require('express');
const router = express.Router();
const gravatar = require('gravatar');
const bcrypt = require('bcryptjs');
//Load User model
const User = require('../../model/User');
router.get('/test', (req, res) => res.json({
    msg: 'users is working'
}));
// @route POST api/users/register
// @desc for register user on db
// @access public
router.post('/register', (req, res) => {
    User.findOne({
            email: req.body.email
        })
        .then(user => {
            if (user) {
                return res.status(400).json({
                    email: 'email already exist.'
                });
            } else {
                const avatar = gravatar.url(req.body.email, {
                    s: '200', //size
                    r: 'pg', //rating
                    d: 'mm' //default
                });
                var newUser = new User({
                    name: req.body.name,
                    email: req.body.email,
                    password: req.body.password,
                    avatar,
                });
                bcrypt.genSalt(10, (err, salt) => {
                    bcrypt.hash(newUser.password , salt, (err, hash) => {
                        if (err) throw err;
                        newUser.password = hash;
                        newUser.save()  
                        .then( user => res.json(user) )
                        .catch(err => console.log(err));
                    })
                }) 
            }
        })
});
module.exports = router; 

 

و error ای که توی ترمینال بهم میده اینه:

PS H:\project\sample project\devconnector> npm run server
> devconnector@1.0.0 server H:\project\sample project\devconnector
> nodemon server.js
[nodemon] 2.0.3
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
(node:9364) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
(node:9364) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
app is listening to port: 500
connect to mongo db successfully
H:\project\sample project\devconnector\routes\api\users.js:42
                        if (err) throw err;
                                 ^
Error: Illegal arguments: undefined, string
    at _async (H:\project\sample project\devconnector\node_modules\bcryptjs\dist\bcrypt.js:214:46)
    at Object.bcrypt.hash (H:\project\sample project\devconnector\node_modules\bcryptjs\dist\bcrypt.js:220:13)
    at H:\project\sample project\devconnector\routes\api\users.js:41:28
    at Immediate.<anonymous> (H:\project\sample project\devconnector\node_modules\bcryptjs\dist\bcrypt.js:153:21)
    at processImmediate (internal/timers.js:456:21)
[nodemon] app crashed - waiting for file changes before starting...

 

با سلام خدمت شما. انگار در زمان ساخت کاربر جدید یکی از مقادیر رو به صورت اشتباه ارسال کردید.

بهترین پاسخ
کیوان علی محمدی ۱۳ اردیبهشت ۱۳۹۹، ۲۰:۰۲