我正在用MongoDB和蓝鸟用猫鼬保存数据。
我所做的就是这样-
垃圾桶/www
var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
.......
.......
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function()
{// successfully connected!
console.log("Successfully Connected to Mongo-DB");
});把这个放在控制台上-
Successfully Connected to Mongo-DB` - So, MongoDB connected successfully模型/post.js
var mongoose = require('mongoose');
var postSchema = new mongoose.Schema({
created_by: String, //should be changed to ObjectId, ref "User"
created_at: {type: Date, default: Date.now},
text: String
});
module.exports = mongoose.model('Post', postSchema);app.js
var Post_Data = require("./models/post");
....
....
router.get('/', function(req, res, next)
{
var Post = mongoose.model("Post");
var post = new Post({
created_by: ""+Math.random()
});
console.log( Post.create(post) );
res.render(
'index',
{
title : 'Express',
site_name : 'Our Site',
layout : 'templates/layout'
}
);
});在那之后我要把这个放在控制台上-
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined }但是,什么也救不了,这证明了-
我发现这个-

在使用MongoBooster之后。
更新-
我的DB配置是这样-
"MONGO_URI": "mongodb://localhost:27017/express_test",
"MONGO_OPTIONS": {
"db": { "safe": true },
"name":"express_test"
}所以,谁能帮帮忙,为什么它什么都不省呢?
提前感谢你的帮助。
发布于 2016-08-09 06:28:49
.create()函数是new Model和.save()的快捷方式。您正在尝试.create一个Model实例,而不是一个简单的对象。有关他们的快速示例,请参见在猫鼬模型文档中构建文档。
Mongoose数据函数的返回只是未来运行异步任务的承诺,日志记录在很大程度上毫无意义。使用.then()等待承诺得到解决。
您的代码中也缺少错误处理,可能会在其中抛出一些东西。使用.catch()进行承诺错误处理。
Post.create({ created_by: ""+Math.random() })
.then(function (result) {
console.log('Saved' result)
})
.catch(function (err) {
console.error('Oh No', err)
})所有这些都可以通过回调来完成(就像Mongoose docco的例子),但是承诺,特别是蓝鸟的承诺更好。
发布于 2016-08-09 06:33:20
我只是使用这个语法组合来创建和保存我的模型:
var myPage = new LandingPage({
user:req.user,
slug: req.body.slug,
}).save(function(err,savedModel){
if(!err){
console.log(savedModel);
}
});发布于 2016-08-09 08:02:05
在导入模型时,您在app.js模块中调用了错误的模型
var Post_Data = require("./models/post"); // <-- Post_Data model never used
....
....但是在路由器实现中创建一个新的Post模型实例
var Post = mongoose.model("Post"); // <-- different model
var post = new Post({
created_by: ""+Math.random()
});你需要调用并使用正确的模型。因此,我建议您重写app.js模块以使用保存()方法,如下所示:
var Post = require("./models/post"); // <-- import correct Post model
....
....
router.get('/', function(req, res, next) {
var post = new Post({ created_by: ""+Math.random() });
post.save().then(function(post) {
console.log(post); // <-- newly created post
res.render('index', {
title: 'Express',
site_name: 'Our Site',
layout: 'templates/layout'
});
})
.catch(function(err) {
console.error('Oopsy', err);
});
});https://stackoverflow.com/questions/38842920
复制相似问题