[英]Looking for Mongoose “hello world” example
更新:有一段时间了。 但当时决定不使用猫鼬。 主要原因是我们在使用 mongo 和 javascript 时无法真正想出使用 ORM 的充分理由。
我一直在尝试使用 Mongoose 创建一个数据库/模型,它基本上只是一个用户名唯一的用户数据库。 听起来很简单,但由于某种原因,我一直无法这样做。
我到目前为止是这样的:
var mongoose = require('mongoose').Mongoose,
db = mongoose.connect('mongodb://localhost/db');
mongoose.model('User', {
properties: [
'name',
'age'
],
cast: {
name: String,
age: Number
},
//indexes: [[{name:1}, {unique:true}]],
indexes: [
'name'
]
/*,
setters: {},
getters: {},
methods: {}
*/
});
var User = db.model('User');
var u = new User();
u.name = 'Foo';
u.save(function() {
User.find().all(function(arr) {
console.log(arr);
console.log('length='+arr.length);
});
});
/*User.remove({}, function() {});*/
它只是不起作用。 数据库创建好了,但用户名不是唯一的。 对我做错了什么有任何帮助或知识吗?
您需要定义架构。 试试这个:(
var mongoose = require('mongoose').Mongoose,
db = mongoose.connect('mongodb://localhost/db'),
Schema = mongoose.Schema;
mongoose.model('User', new Schema({
properties: [
'name',
'age'
],
[...]
}));
对于猫鼬 2.7(在 Node v. 0.8 中测试):
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var db = mongoose.connect('mongodb://localhost/db');
var User = new Schema({
first_name: String,
last_name: String
});
var UserModel = mongoose.model('User', User);
var record = new UserModel();
record.first_name = 'hello';
record.last_name = 'world';
record.save(function (err) {
UserModel.find({}, function(err, users) {
for (var i=0, counter=users.length; i < counter; i++) {
var user = users[i];
console.log( "User => _id: " + user._id + ", first_name: " + user.first_name + ", last_name: " + user.last_name );
}
});
});
尝试在 var mongoose = require('mongoose').Mongoose 中给出正确的路径,
. 它对我有用..
#我的代码
require.paths.unshift("/home/LearnBoost-mongoose-45a591d/mongoose"); var mongoose = require('mongoose').Mongoose; var db = mongoose.connect('mongodb://localhost/db'); mongoose.model('User', { properties: ['first name', 'last name', 'age', 'marriage_status', 'details', 'remark'], }); var User = db.model('User'); var record = new User(); record.first name = 'xxx'; record.last name = 'xxx'; record.age = 'xxx'; record.marriage_status = 'xxx'; record.details = 'xxx'; record.remarks = 'xxx'; record.save(function() { User.find().all(function(arr) { console.log(arr); console.log('length='+arr.length); }); }); //User.remove({}, function() {});
用 node filename.js 编译它祝你好运..
Learnboost 最近上传了一组例子https://github.com/LearnBoost/mongoose/tree/master/examples
您应该在第一次运行您的应用程序之前定义您的唯一索引。 否则,您需要放弃收藏并重新开始。 此外,当“user1”已经存在时,当您尝试保存 { name: 'user1' } 时,mongoose 不会抛出错误。
我知道这个问题已经有 10 年的历史了,最初的海报放弃了 Mongoose,但由于它出现在 Google 搜索的顶部附近,我觉得我会提供一个新的答案。
提供一个完整的基本示例,使用 Typescript。 我在代码中适当地添加了注释。
async function mongooseHelloWorld () {
const url = 'mongodb://localhost/helloworld';
// provide options to avoid a number of deprecation warnings
// details at: https://mongoosejs.com/docs/connections.html
const options = {
'useNewUrlParser': true,
'useCreateIndex': true,
'useFindAndModify': false,
'useUnifiedTopology': true
};
// connect to the database
console.log(`Connecting to the database at ${url}`);
await mongoose.connect(url, options);
// create a schema, specifying the fields and also
// indicating createdAt/updatedAt fields should be managed
const userSchema = new mongoose.Schema({
name:{
type: String,
required:true
},
email: {
type: String,
required: true
}
}, {
timestamps: true
});
// this will use the main connection. If you need to use custom
// connections see: https://mongoosejs.com/docs/models.html
const User = mongoose.model('User', userSchema);
// create two users (will not be unique on multiple runs)
console.log('Creating some users');
await User.create({ name: 'Jane Doe', email: 'jane.done@example.abcdef' });
await User.create({ name: 'Joe Bloggs', email: 'jane.done@example.abcdef' });
// Find all users in the database, without any query conditions
const entries = await User.find();
for (let i = 0; i < entries.length; i++) {
const entry = entries[i] as any;
console.log(`user: { name: ${entry.name}, email: ${entry.email} }`);
}
}
// running the code, and making sure we output any fatal errors
mongooseHelloWorld()
.then(() => process.exit(0))
.catch(error => {
console.log(error)
});
请注意,这已通过 Mongoose 5.9.26 进行了验证,针对 Mongo 4.0.13 运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.