我在使用mongoose和自定义grunt任务时遇到了问题。我想要做的就是创建一个行为类似于简单的put请求的任务,通过获取我在命令行中给出任务的参数并处理/保存到数据库。但是,当我希望在添加它之后在数据库中找到它...我无法在任何地方找到它。
目标是创建一个新公司,并从“grunt addcompany:a:b:c:d”命令中保存4个简单参数。
这是“公司”模式(我保持基本):
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var Company = new Schema({
name: String,
email: String,
info: String,
also: String
});
module.exports = mongoose.model('Companies', Company);
这是我的Gruntfile.js的顶部:
var schemaCompany = require('./models/company'),
mongoose = require('mongoose'),
db = mongoose.connection,
Company = mongoose.model('Companies', schemaCompany);
这是任务:
grunt.registerTask('addcompany', 'add a company', function(n,e,i,a) {
var done = this.async();
mongoose.connect('mongodb://localhost/app-test');
db.on('open', function () {
var co = new Company({
name: n,
email: e,
info: i,
also: a
});
co.save(function (err) {
if (err) return handleError(err);
console.log('success!');
});
console.log(co);
db.close();
});
});
当我在CLI中键入此内容时: grunt addcompany:name:email:description:more_stuff CLI返回:
Running "addcompany:name:email:description:more_stuff" (addcompany) task
{
"name": "name",
"email": "email",
"info": "description",
"also": "more_stuff",
"_id" : ObjectID(" ~object id here~ "),
"__v" : 0
}
虽然它创建了一个对象ID,但它永远不会保存在任何地方。 app-test db中的公司集合中没有任何内容出现。我错过了什么?
感谢您的帮助!
答案 0 :(得分:0)
试试这个:
db.on('open', function () {
var co = new Company({
name: n,
email: e,
info: i,
also: a
});
co.save(function (err) {
// log the doc
console.log(co);
// log the error
console.log(err);
if (err) return handleError(err);
console.log('success!');
// close the database after 'co' is saved.
db.close();
done(true);
});
});