【问题标题】:Error when using 2 collections schema in single file in Mongoose MongoDB在 Mongoose MongoDB 的单个文件中使用 2 个集合模式时出错
【发布时间】:2017-06-15 02:45:36
【问题描述】:

我有 myschema.js 文件

var mongoose = require('mongoose');


var Schema = mongoose.Schema;

 // User Collection Schema
var RegSchema = mongoose.Schema({
    UserName: String,
    UserEmail: String,
    userprofileImage : String,
    userId: {type : String, index : true, unique: true},
    reg_time : {
        type : Date, default: Date.now
    }
}, { collection: 'user' });

 var PostSchema = mongoose.Schema({
    PostId: {type : String, index : true, unique: true},
    PostTitle: String,
    PostContent: String,
    Userid : String,
    Likes : Array, // will get userid in this column
    post_reg_time : {
        type : Date, default: Date.now
    }
}, { collection: 'post' });

// Model
module.exports = mongoose.model('UserReg', RegSchema);
module.exports = mongoose.model('PostSave', PostSchema);
//exports.UserReg = UserReg;

我收到错误 {Mongo Error: '$set' is empty 你必须像这样指定一个字段{:..}}

现在,如果我删除 Postschema 集合代码,那么它可以工作。此模式文件用于用户插入。用户插入的文件代码是

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true })); 



var UserReg = require('./myschema.js');

module.exports = function(userdetail, callback){
var bb;

                  var UserAdd = new UserReg({
                                "UserName": userdetail.username,
                                "UserEmail": userdetail.useremail,
                                "userId": userdetail.userId,
                             "userprofileImage": userdetail.userprofileImage
                            });

                    var userdetailchange = {
                                "UserName": userdetail.username,
                                "UserEmail": userdetail.useremail,
                                "userId": userdetail.userId,
                        "userprofileImage": userdetail.userprofileImage
                    };
                    // Update if found otherwise Insert
                    UserReg.update({"userId":userdetail.userId },{ $set:userdetailchange},{upsert:true, new: true, setDefaultsOnInsert: true}, function (err, data) {
                            if (err) {
                                callback(err);
                            } 
                                callback("data Inserted or Updated successfully"+ JSON.stringify(data));                                
                    });

};

但我现在没有任何数据可用于后期收集。一旦 Post 集合正常工作,我将插入数据。解决此错误的任何帮助。

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    您正在覆盖 module.exports,因此仅导出最后一个架构 (PostSave)。

    myschema.js 中,最后可以这样做:

    exports.UserReg = mongoose.model('UserReg', RegSchema);
    exports.PostSave = mongoose.model('PostSave', PostSchema);
    

    在另一个脚本中,您可以使用以下命令导入UserReg

    var UserReg = require('./myschema.js').UserReg;
    

    同样,您可以导入PostSavewith:

    var PostSave = require('./myschema.js').PostSave;
    

    【讨论】:

      猜你喜欢
      • 2012-11-20
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 2013-04-07
      • 2019-08-07
      • 2018-05-30
      • 2017-10-27
      • 2021-05-21
      相关资源
      最近更新 更多