操作系统是Os X.我通过brew安装了mongodb。
我打开一个终端并输入
mongod
然后在终端中打印几行。数据库似乎绝对正常运行。我看到例如:
db version v3.4.3
waiting for connections on port 27017
然后我打开另一个终端并输入
mongo
我看到了:
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
然后我输入这个终端
show dbs
我明白了:
admin 0.000GB
api 0.000GB
local 0.000GB
所以我输入
use api
db.movie.find();
终端打印:
{ "_id" : ObjectId("58f34b96d7eac221145a5d4e"), "name" : "tutorials point" }
{ "_id" : ObjectId("58f367e198554c65c4a34c9f"), "name" : "lalaland" }
我输入:
db.movie.insert({ name: "forreste gump"});
然后find()命令返回:
{ "_id" : ObjectId("58f34b96d7eac221145a5d4e"), "name" : "tutorials point" }
{ "_id" : ObjectId("58f367e198554c65c4a34c9f"), "name" : "lalaland" }
{ "_id" : ObjectId("58f369259a667b015582e4b8"), "name" : "forreste gump" }
现在,我使用express.js创建一个新的节点应用程序。这是代码:
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
var connection = mongoose.createConnection('mongodb://localhost/api');
connection.on('open', function() {
console.log('opened');
});
var movieSchema = mongoose.Schema({
name: String
});
var Movie = mongoose.model('Movie', movieSchema);
var pulp = new Movie({ name: 'pulp fiction' });
pulp.save(function (err, fluffy) {
if (err){
console.error("Error:");
console.error(err);
}
console.error('inside save');
});
console.log('pulp.name');
console.log(pulp.name);
在package.json中我输入了
"mongoose": "~4.9.4",
然后运行npm install(我可以看到已安装该版本)
所以,当我用
启动应用程序时node app.js
在终端我看到了
pulp.name
pulp fiction
opened
这意味着该行" pulp.save"永远不会被贬低。或者,可能是由于某些不显示的错误而停止。 我对此感到疯狂。我真的不知道问题是什么。 mongod启动并运行,我连接到mongoose中的正确数据库。但仍然无法保存文档,最重要的是,我没有看到任何错误的痕迹。显然必须出现在哪里。 如何深入调试mongoose操作?
PS:当我去运行mongo客户端的终端时,我输入:
db.movie.find()
我只看到
{ "_id" : ObjectId("58f34b96d7eac221145a5d4e"), "name" : "tutorials point" }
{ "_id" : ObjectId("58f367e198554c65c4a34c9f"), "name" : "lalaland" }
{ "_id" : ObjectId("58f369259a667b015582e4b8"), "name" : "forreste gump" }
所以"纸浆小说"从未添加过。
答案 0 :(得分:1)
差异为mongoose.connect()
vs mongoose.createConnection()
(另见this question)
基本上如下工作:
使用mongoose.createConnection()
时,您必须这样做:
var db = mongoose.createConnection(...)
// And use the db variable
var Model = db.model(...); // etc...
而不是使用mongoose.model(...)
。
这是因为使用mongoose.createConnection()
您没有在mongoose
对象上创建连接,只在db
对象的范围内。