Hỏi về lỗi UnhandledPromiseRejectionWarning: ValidationError: users validation failed: xxx : Cast to Array failed for value



  • file model

    const mongoose = require('mongoose');
    var thongBaoSchema = mongoose.Schema(
        {
            loaiThongBao: {
                type: String,
                default: 'upVote'
            }, //upVote, comment
            noiDungThongBao: {
                type: String,
                default: ""
            },
            postObjectID: {
                type: mongoose.Schema.Types.ObjectId,
                default: null
                // required: true
            },
            link:{
                type:String
            },
            idCommentTaoThongBao: {
                type: mongoose.Schema.Types.ObjectId
            }, //neu la comment thi la comment id bao nhieu
            ngayTaoThongBao: {
                type: Date,
                default: Date.now()
            },
            idUserTaoThongBao:{
                type: mongoose.Schema.Types.ObjectId,
                default: ""
            },
            trangThaiThongBao: {
                type: Number,
                default: 0
            } // 0 là chưa đọc, 1 là đã đọc}
        }
    );
    var Schema = mongoose.Schema({
        ten: String,
        ten_dang_nhap: {
            type: String,
            unique: true,
            required: true,
            dropDups: true
        },
        mat_khau: String,
        email: {
            type: String,
            unique: true,
            required: true,
            dropDups: true
        },
        ngay_sinh: Number,
        gioi_tinh: Number, //1 la nam, 2 la nu, 3 chuyen gioi, 4 an
        anh_dai_dien: String,
        quyen_hang: {
            type: Number,
            default: 3
        }, //1 admin, 2 mod, 3 nguoi su dung
        dang_nhap_lan_cuoi: Number,
        ip_dang_nhap_lan_cuoi: String,
        mang_xa_hoi: {
            type: JSON
        },
        diem: {
            type: Number,
            default: 0
        },
        voteComments: {
            upVoteComments: {
                type: Array,
                default: null
            },
            downVoteComments: {
                type: Array,
                default: null
            }
        },
        votePosts: {
            upVotePosts: {
                type: Array,
                default: null
            },
            downVotePosts: {
                type: Array,
                default: null
            }
        },
        test: String,
        clickThongBao: {
            type: Number,
            default: 0
        },
        thongBao: {
            type: [thongBaoSchema],
            default:null
        },
        trang_thai_tai_khoan: Number //0 chua kich hoat, 1 da kich hoat, 2 dan bi ban
    })
    module.exports = mongoose.model('users', Schema);
    

    Code thêm của mình

     var user = usersModel.create({
                        ten_dang_nhap: profile.id,
                        mat_khau: mat_khau,
                        email: profile.emails[0].value,
                        anh_dai_dien: anh,
                        ten: profile.displayName,
                        mang_xa_hoi: {
                            facebook: [{
                                id: profile.id
                            }]
                        },
                        thongBao:  mongoose.Types.Array( {
                                loaiThongBao: 'thongBao',
                                noiDungThongBao: 'Chào mừng bạn đến với mạng xã hồi hài vui vẽ này',
                                postObjectID: null,
                                link: '',
                                ngayTaoThongBao: Date.now(),
                                idUserTaoThongBao: mongoose.Types.ObjectId('5b0fba657ae4f53f8cf82a91'),
                                idCommentTaoThongBao: null,
                                trangThaiThongBao: 0
                                 })
                    }, async (err, doc) => {
                        if (err)
                            throw err;
                        else {
                            var _token = this.token(doc);
                            doc.token = _token;
                            return callback(null, doc)
                        }
                    })
    

    Lỗi

    (node:3732) UnhandledPromiseRejectionWarning: ValidationError: users validation failed: thongBao: Cast to Array failed for value "[{"loaiThongBao":"thongBao","noiDungThongBao":"Chào mừng bạn đến với mạng xã hồi hài vui vẽ này","postObjectID":null,"link":"","ngayTaoThongBao":1532344958816,"idUserTaoThongBao":"5b0fba657ae4f53f8cf82a91","idCommentTaoThongBao":null,"trangThaiThongBao":0}]" at path "thongBao"
        at new ValidationError (D:\react\server\node_modules\mongoose\lib\error\validation.js:27:11)
        at model.Document.invalidate (D:\react\server\node_modules\mongoose\lib\document.js:1846:32)
        at model.$set (D:\react\server\node_modules\mongoose\lib\document.js:866:10)
        at model._handleIndex (D:\react\server\node_modules\mongoose\lib\document.js:676:14)
        at model.$set (D:\react\server\node_modules\mongoose\lib\document.js:633:22)
        at model.Document (D:\react\server\node_modules\mongoose\lib\document.js:112:12)
        at model.Model (D:\react\server\node_modules\mongoose\lib\model.js:64:12)
        at new model (D:\react\server\node_modules\mongoose\lib\model.js:4033:13)
        at toExecute.push.callback (D:\react\server\node_modules\mongoose\lib\model.js:2228:22)
        at D:\react\server\node_modules\async\internal\parallel.js:27:9
        at eachOfArrayLike (D:\react\server\node_modules\async\eachOf.js:57:9)
        at exports.default (D:\react\server\node_modules\async\eachOf.js:9:5)
        at _parallel (D:\react\server\node_modules\async\internal\parallel.js:26:5)
        at parallelLimit (D:\react\server\node_modules\async\parallel.js:85:26)
        at utils.promiseOrCallback.cb (D:\react\server\node_modules\mongoose\lib\model.js:2238:5)
        at Object.promiseOrCallback (D:\react\server\node_modules\mongoose\lib\utils.js:222:14)
    (node:3732) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
    (node:3732) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
    FacebookTokenError: This authorization code has been used.
        at Strategy.parseErrorResponse (D:\react\server\node_modules\passport-facebook\lib\strategy.js:196:12)
        at Strategy.OAuth2Strategy._createOAuthError (D:\react\server\node_modules\passport-oauth2\lib\strategy.js:376:16)
        at D:\react\server\node_modules\passport-oauth2\lib\strategy.js:166:45
        at D:\react\server\node_modules\oauth\lib\oauth2.js:191:18
        at passBackControl (D:\react\server\node_modules\oauth\lib\oauth2.js:132:9)
        at IncomingMessage.<anonymous> (D:\react\server\node_modules\oauth\lib\oauth2.js:157:7)
        at IncomingMessage.emit (events.js:187:15)
        at endReadableNT (_stream_readable.js:1086:12)
        at process._tickCallback (internal/process/next_tick.js:63:19)
    

    Anh đã từng thì giúp mình đã thử thêm var user = usersModel.create({[...]}) vẫn không được đổi type thành Json thì chạy ngon mà cảm thấy nó ko check giữ liệu thì hơi kỳ.



  • Mình đã sữa code theo thứ tự bạn khai bao trong schema và điền đầy đủ thông tin vào đó thì ok rồi. mấy thuộc tín default các bạn nên điền vào luôn không nên bỏ qua


Log in to reply