[解決済み] 一度コンパイルしたモデルを上書きすることができない Mongoose
2022-02-12 23:42:28
質問
何が間違っているのか分かりませんが、以下は私のcheck.jsです。
var db = mongoose.createConnection('localhost', 'event-db');
db.on('error', console.error.bind(console, 'connection error:'));
var a1= db.once('open',function(){
var user = mongoose.model('users',{
name:String,
email:String,
password:String,
phone:Number,
_enabled:Boolean
});
user.find({},{},function (err, users) {
mongoose.connection.close();
console.log("Username supplied"+username);
//doSomethingHere })
});
そして、これが私のinsert.jsです。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/event-db')
var user = mongoose.model('users',{
name:String,
email:String,
password: String,
phone:Number,
_enabled:Boolean
});
var new_user = new user({
name:req.body.name,
email: req.body.email,
password: req.body.password,
phone: req.body.phone,
_enabled:false
});
new_user.save(function(err){
if(err) console.log(err);
});
check.jsを実行しようとすると、必ずこのエラーが発生します。
一度コンパイルした'users'モデルを上書きすることができない .
このエラーはスキーマの不一致によるものだと理解していますが、どこでそれが起こっているのかがわかりません?私はmongooseとnodeJSのかなりの初心者です。
以下は、私のMongoDBのクライアントインタフェースから取得したものです。
MongoDB shell version: 2.4.6 connecting to: test
> use event-db
switched to db event-db
> db.users.find()
{ "_id" : ObjectId("52457d8718f83293205aaa95"),
"name" : "MyName",
"email" : "[email protected]",
"password" : "myPassword",
"phone" : 900001123,
"_enable" : true
}
>
解決方法は?
このエラーは、すでにスキーマが定義されているのに、再度スキーマを定義しているために発生しています。 一般的には、スキーマを一度インスタンス化し、グローバル・オブジェクトがそれを必要とするときに呼び出すようにするのがよいでしょう。
例えば
user_model.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
name:String,
email:String,
password:String,
phone:Number,
_enabled:Boolean
});
module.exports = mongoose.model('users', userSchema);
check.js
var mongoose = require('mongoose');
var User = require('./user_model.js');
var db = mongoose.createConnection('localhost', 'event-db');
db.on('error', console.error.bind(console, 'connection error:'));
var a1= db.once('open',function(){
User.find({},{},function (err, users) {
mongoose.connection.close();
console.log("Username supplied"+username);
//doSomethingHere
})
});
insert.js
var mongoose = require('mongoose');
var User = require('./user_model.js');
mongoose.connect('mongodb://localhost/event-db');
var new_user = new User({
name:req.body.name
, email: req.body.email
, password: req.body.password
, phone: req.body.phone
, _enabled:false
});
new_user.save(function(err){
if(err) console.log(err);
});
関連
-
[解決済み] エラー: nodejs の get 呼び出しで getaddrinfo ENOTFOUND が発生しました。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み】Mongooseで配列の値を更新する方法
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] Mongooseで文書を更新/アップサートするにはどうしたらいいですか?
-
[解決済み] Mongooseの"__v "フィールドとは?
-
[解決済み】Mongoose: findOneAndUpdateが更新されたドキュメントを返さない
-
[解決済み】mongooseでmongoの配列にアイテムをプッシュする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】AWS STS AssumeRoleへのアクセスを可能にする方法
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】Node.jsのエラーECONNRESETをデバッグするにはどうすればよいですか?
-
[解決済み] (node:63208) DeprecationWarning: collection.ensureIndex は非推奨です。代わりにcreateIndexesを使用してください [重複]。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み】Passport.js - エラー: ユーザーのセッションへのシリアライズに失敗しました。
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] Heroku "状態が起動から停止に変更されました SIGTERMで全プロセスを停止"
-
[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。