如何在运行 Mongodb 的 Mongoose 中执行脚本?

Posted

技术标签:

【中文标题】如何在运行 Mongodb 的 Mongoose 中执行脚本?【英文标题】:How to execute a script in Mongoose running Mongodb? 【发布时间】:2020-05-11 23:18:59 【问题描述】:

我正在尝试通过节点控制台或仅通过命令行将以下内容作为脚本运行。 但似乎不起作用,我错过了什么?

const mongoose = require("mongoose");
const ENV = require('dotenv').parse(envStr)


mongoose.connect(
  ENV.MONGO_URL,

  function(err) 
    if (err) throw err;
    console.log('connected');
  ,
)

const UserSchema = (
  name: String,
  messages: [Messages], // this part is working when I run tests...
  ...
)
UserSchema.methods.sendGreetings = function() 
  this.messages.push(
    new Message(
      msg: 'Hello!'
    )
  )

const User = new mongoose.Model('User', UserSchema)


const all = User.find();
debugger // not working
all.map(user => 
  debugger; // not working
  user.sendGreetings()
);

【问题讨论】:

【参考方案1】:

你应该更新你的代码,因为它的承诺请求!

const mongoose = require('mongoose');
const ENV = require('dotenv').parse(envStr)

run().catch(error => console.log(error.stack));

async function run() 
  await mongoose.connect(ENV.MONGO_URL,  useNewUrlParser: true );

  // Clear the database every time. This is for the sake of example only,
  // don't do this in prod :)
  await mongoose.connection.dropDatabase();

  const customerSchema = new mongoose.Schema( name: String, messages: [Messages], ... );
  const User = mongoose.model('User', UserSchema);

  //await User.create( name: 'A', messages: [30, 10] );
  //await User.create( name: 'B', messages: [28, 10] );
  // add your data in your Schema

  // Find all User
  const docs = await User.find();
  console.log(docs);
  docs.map(license => 
     license.sendGreetings()
  );

更多了解find() in mongooes read this link 并制作脚本

【讨论】:

以上是关于如何在运行 Mongodb 的 Mongoose 中执行脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MEAN 堆栈中调试 Mongoose 和 MongoDB?

如何使用 Mongodb 或 Mongoose 查询并使用 javascript 打印?

如何使用 mongoose 从 MongoDb 获取数据?

如何使用 mongoose 将本地 mongodb 与 node.js 应用程序连接?

单链查询 mongodb / mongoose 获取所有评论

如何将 MongoDB 查询从 Node.js 驱动程序格式调整为 Mongoose 格式