MongoDBとmongooseを学び始めたところです。現在、私は次の構造を持っています:
_database -> skeletonDatabase
collection -> adminLogin
_
コマンドラインからdb.adminLogin.find()
を実行すると、次のようになります。
_{ "_id" : ObjectId("52lhafkjasfadsfea"), "username" : "xxxx", "password" : "xxxx" }
_
私の接続(これは機能します。参考までに追加するだけです)
_module.exports = function(mongoose)
{
mongoose.connect('mongodb://localhost/skeletonDatabase');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
console.log('Conntected To Mongo Database');
});
}
_
私の-js-
_module.exports = function(mongoose)
{
var Schema = mongoose.Schema;
// login schema
var adminLogin = new Schema({
username: String,
password: String
});
var adminLoginModel = mongoose.model('adminLogin', adminLogin);
var adminLogin = mongoose.model("adminLogin");
adminLogin.find({}, function(err, data){
console.log(">>>> " + data );
});
}
_
私のconsole.log()
は_>>>>
_として返されます
だから私はここで何が間違っているのですか?コンソールログにデータが記録されないのはなぜですか?助けてくれてありがとう。
mongooseはデフォルトで単一のモデル名を取り、それらを複数の名前のコレクションとペアにします。そのため、mongooseはデータベースで「adminLogins」という存在しないコレクションを探しています。スキーマを定義するときに、コレクション名を2番目の引数として指定できます。
var adminLogin = new Schema({
username: String,
password: String
}, {collection: 'adminLogin'});
最初にコンパイルするだけですoneスキーマを引数としてモデル
var adminLogin = mongoose.model('adminLogin', adminLogin);
コードにadminLoginは存在しませんが、adminLoginModelは存在します。
その後、代わりに
adminLogin.find({}, function(err, data){
console.log(">>>> " + data );
});
これを試して
adminLogin.find(function (err, adminLogins) {
if (err) return console.error(err);
console.log(adminLogins);
mongoはモデルの複数形を使用してコレクションに名前を付けるため、「s」は重要です。英語で申し訳ありません。
APIの高速ルート内に挿入する際に問題が発生したため、@ elkhrzのおかげで、最初にスキーマを定義し、次にその1つのモデルをコンパイルして、次のようにプルすることで変更しました。
app.get('/lists/stored-api', (req, res) => {
Apis.find(function(err, apis) {
if (err) return console.error(err);
res.send(apis);
});
});
私はそれを本体に送信しません。特にAPIを本番ベースのアプリケーションにすることを計画している場合は、実際に何か他のことをします。
この問題を実行し、データをレンダリングするための適切な方法を確認してください。 Expressでルート間でデータを渡す方法
データを処理するときは、常に安全な手順を実行することをお勧めします。